原创作品,转载请注明出处

copyright:weishusheng   2015.3.18

email:642613208@qq.com

平台:

Linux version 2.6.32-279.el6.x86_64

交叉编译器路径:/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-

开发板:FL2440

开发板运行内核:linux3.0

开发板文件系统:initramfs

easycwmp是基于cwmp协议开发出的CPE客户端,它的运行需要相应的库文件和脚本文件,只有把这些文件放在easycwmp能找到的位置,并且里面的内容符合我们自己的开发板,它才会运行的好。我用的是initramfs文件系统,initramfs运行在RAM,掉电后数据会丢失,所以把apps挂载到另一个分区,并把easycwmp放到apps里面,这样就不用每次重启都重新设置。

用mount命令可以查看分区挂载情况

/ >: mount
rootfs on / type rootfs (rw)
proc on /proc type proc (rw,relatime)
usbfs on /proc/bus/usb type usbfs (rw,relatime)
tmpfs on /dev type tmpfs (rw,relatime)
ramfs on /tmp type ramfs (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
ubi7:apps on /apps type ubifs (rw,sync,noatime)
/dev/mtdblock8 on /data type jffs2 (rw,sync,noatime)
/ >:

在PC上easycwmp用到的脚本都放在默认位置,在我的FL2440上要做一些更改,以适应我的文件系统(掉电丢失)

1.在apps下创建相关目录用以存放项目程序

/ >:mkdir -p /apps/easycwmp

2.因为我是在192.168.1.3的机器(以后简称.3服务器)上交叉编译easycwmp的,所以需要把.3服务器上的相关脚本通过tftp放到FL2440开发板上,把所有用到的脚本全部放到scripts目录里,各个脚本需要你自己从安装的位置拷贝过来

把它们全部打包放在/tftp目录下

3. 把库文件全部打包放到/tftp目录里面

4.把用到的uci,ubusd,jshn,easycwmpd放到/tftp目录里面

5.在FL2440上编写一个配置文件,用以把我们刚刚放到.3服务器上的库文件,脚本文件放到相应地方

/ >: vim conf.sh

#!/bin/bash
mkdir -p /apps/easycwmp/lib
mkdir -p /apps/easycwmp/bin
echo "----------------load libs-------------------------"
cd /apps/easycwmp/lib
tftp -gr cwmplib.tar.bz2 192.168.1.3
tar -xjf cwmplib.tar.bz2
chmod 777 *
ls

echo "----------------load scripts-----------------------"
cd /apps/easycwmp/scripts
tftp -gr cwmpscripts.tar.bz2 192.168.1.3
tar -xjf cwmpscripts.tar.bz2
chmod 777 *
ls

cd

mkdir -p /etc/easycwmp
mkdir -p /etc/config/
mkdir -p /lib/functions/

echo "----------------make link-----------------------"
ln -sf /apps/easycwmp/bin/easycwmpd /usr/sbin/easycwmpd
ln -sf /apps/easycwmp/scripts/easycwmp.sh /usr/sbin/easycwmp
ln -sf /apps/easycwmp/scripts/easycwmp /etc/config/easycwmp
ls -l /usr/sbin/easycwmpd
ls -l /usr/sbin/easycwmp
ls -l /etc/config/easycwmp

echo "----------------cp uci.sh to /lib/config/-----------------------"
mkdir -p /lib/config/
cp /apps/easycwmp/scripts/uci.sh /lib/config/uci.sh
ls /lib/config/uci.sh

echo "----------------load ubusd -----------------------"
cd /usr/sbin
tftp -gr ubusd 192.168.1.3
chmod 777 ubusd
ls /usr/sbin/ubusd

echo "-----------------load uci--------------------------"
cd /sbin
tftp -gr uci 192.168.1.3
chmod 777 uci
ls /sbin/uci

export UCI_CONFIG_DIR="/apps/easycwmp/scripts/"
export UBUS_SOCKET="/tmp/ubus.sock"

echo "---------------load jshn----------------------------"
cd /bin
tftp -gr jshn 192.168.1.3

echo "----------------get easycwmpd--------------------------"
cd /apps/easycwmp/bin
tftp -gr easycwmpd 192.168.1.3
chmod 777 easycwmpd
ls

echo "all done!"

6.执行该脚本

/ >:sh conf.sh

执行该脚本后lib下应该有的文件是

scripts下应该有

你还应该看到

需要说明的是:

a.我的文件系统是用busybox-1.20.0制作的,它的bash不支持easycwmp的相关语法,于是我重新交叉编译了bash

(也可以考虑升级busybox,busybox下载地址http://www.busybox.net/downloads/)

bash下载地址http://ftp.gnu.org/gnu/bash/,我下载的是bash-4.3,

创建build.sh

vim build.sh

#!/bin/bash
PRJ_PATH=`pwd`
#CROSS=/opt/buildroot-2011.11/arm920t/usr/bin/arm-linux-
CROSS=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-

export CC=${CROSS}gcc
export CPP=${CROSS}cpp
export AS=${CROSS}as
export LD=${CROSS}ld
export AR=${CROSS}ar
export RANLIB=${CROSS}ranlib
export STRIP=${CROSS}strip
exprot bash_cv_getenv_redef=no

make distclean

./configure --host=arm-linux --prefix=${PRJ_PATH}/../install \
--enable-static-link --without-bash-malloc

${CROSS}strip bash
make

make install

执行sh build.sh

把bash放到/tftp

b.busybox-1.20.0也不支持easycwmp里的getopt命令,于是交叉编译getopt,getopt是内嵌在util-linux-ng里的,交叉编译util-linux-ng里面会生成getopt

util-linux-ng下载网址ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/

我下载的是util-linux-ng-2.16.tar.gz

创建build.sh

[weishusheng@localhost util-linux-ng-2.16]$ vim build.sh
#!/bin/bash
PRJ_PATH=`pwd`
#CROSS=/opt/buildroot-2011.11/arm920t/usr/bin/arm-linux-
CROSS=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-
make distclean

export CC=${CROSS}gcc
export CPP=${CROSS}cpp
export AS=${CROSS}as
export LD=${CROSS}ld
export AR=${CROSS}ar
export RANLIB=${CROSS}ranlib
export STRIP=${CROSS}strip

./configure --host=arm-linux --without-ncurses --prefix=/home/weishusheng/myfl2440/cwmp/fl-easy
cwmp/install
make && make install

执行sh build.sh

把getopt放到/tftp目录下

[weishusheng@localhost util-linux-ng-2.16]$ cp /home/weishusheng/myfl2440/cwmp/fl-easycwmp/install/bin/getopt /tftp

c.在FL2440板子上没有curl,需要交叉编译curl

下载地址http://curl.haxx.se/download.html

我下的是curl-7.41.0版本

创建build.sh

[weishusheng@localhost curl-7.41.0]$ vim build.sh
#!/bin/bash
PRJ_PATH=`pwd`
#CROSS=/opt/buildroot-2011.11/arm920t/usr/bin/arm-linux-
CROSS=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-
make distclean
autoreconf -i
export CC=${CROSS}gcc
export CPP=${CROSS}cpp
export AS=${CROSS}as
export LD=${CROSS}ld
export AR=${CROSS}ar
export RANLIB=${CROSS}ranlib
export STRIP=${CROSS}strip
./configure --host=arm-linux --prefix=${PRJ_PATH}/../install --without-ssl
make && make install

执行sh build.sh ,并把curl及libcurl.so ,libcurl.so.4,libcurl.so.4.3.0放到/tftp 目录下

d.shflags.sh也需要放到板子上,我用的shflags-1.0.3/src下的shflags,它是个脚本,不用交叉编译,将shflags重命名为shflags.sh就好

下载地址:http://www.filewatcher.com/m/shflags-1.0.3.tgz.43549-0.html

它里面的内容:

# $Id: shflags 133 2009-05-10 18:04:51Z kate.ward@forestent.com $
# vim:et:ft=sh:sts=2:sw=2
#
# Copyright 2008 Kate Ward. All Rights Reserved.
# Released under the LGPL (GNU Lesser General Public License)
#
# shFlags -- Advanced command-line flag library for Unix shell scripts.
# http://code.google.com/p/shflags/
#
# Author: kate.ward@forestent.com (Kate Ward)
#
# This module implements something like the google-gflags library available
# from http://code.google.com/p/google-gflags/.
#
# FLAG TYPES: This is a list of the DEFINE_*'s that you can do. All flags take
# a name, default value, help-string, and optional 'short' name (one-letter
# name). Some flags have other arguments, which are described with the flag.
#
# DEFINE_string: takes any input, and intreprets it as a string.

......

7.FL2440上修改/apps/easycwmp/scripts/easycwmp.sh

/apps/easycwmp/scripts >: vim easycwmp.sh
#!/bin/sh
# Copyright (C) 2012-2014 PIVA Software <www.pivasoftware.com>
# Author: MOHAMED Kallel <mohamed.kallel@pivasoftware.com>
# Author: AHMED Zribi <ahmed.zribi@pivasoftware.com>
# Author: ANIS ELLOUZE <anis.ellouze@pivasoftware.com>
# Copyright (C) 2011-2012 Luka Perkov <freecwmp@lukaperkov.net>

. /apps/easycwmp/scripts/functions.sh
. /apps/easycwmp/scripts/jshn.sh
. /apps/easycwmp/scripts/shflags.sh
. /apps/easycwmp/scripts/defaults

UCI_GET="/sbin/uci -q ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} get"
UCI_SET="/sbin/uci -q ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} set"
UCI_SHOW="/sbin/uci -q ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} show"
UCI_COMMIT="/sbin/uci -q ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} commit"

......

主要修改functions.sh,jshn.sh,shflags.sh,defaults的加载路径,再把最后一行的

#handle_action 2>/dev/null

改为

handle_action

这样才能看到出错信息,不然要是脚本执行出现什么问题都看不到打印信息

8.FL2440上修改network.sh

/apps/easycwmp/scripts >: vim network.sh

把第一行改为,(即jshn.sh的真实加载路径)
. /apps/easycwmp/scripts/jshn.sh

9.FL2440上修改easycwmp(黑色字体标注的是命令和更改的地方)

/apps/easycwmp/scripts >: vim easycwmp
# easycwmp uci configuration

config local
option interface eth0
option port 7547
option ubus_socket /var/run/ubus.sock
option date_format %FT%T%z
option username easycwmp
option password easycwmp

config acs
option scheme http
option username openacs
option password openacs
option hostname 192.168.1.21
option port 8080
option path /openacs/acs
option parameter_key '1'
option periodic_enable 'true'
option periodic_interval '180'
option periodic_time '1'

config device
option manufacturer easycwmp
option oui FFFFFF
option product_class mycwmp
option serial_number FFFFFF123456
option hardware_version example_hw_version
option software_version example_sw_version

config scripts
# load OpenWrt generic network functions
list location /apps/easycwmp/scripts/network.sh
# load easycwmp common functions
list location /apps/easycwmp/scripts/common
# easycwmp specific functions
list location /apps/easycwmp/scripts/device_info
list function device_info
list location /apps/easycwmp/scripts/lan_device
list function lan_device
list location /apps/easycwmp/scripts/management_server
list function management_server
list location /apps/easycwmp/scripts/wan_device
list function wan_device

10.FL2440上修改defaults

/apps/easycwmp/scripts >: vim defaults
#!/bin/sh
# Copyright (C) 2011-2012 Luka Perkov <freecwmp@lukaperkov.net>

# set these to appropriate values and remove comment if you want to use them

#default_management_server_acs_hostname=""
default_management_server_connection_request_url="http://192.168.1.21:8080/openacs/acs"
#default_wan_device_mng_interface_ip=""
#default_wan_device_mng_interface_mac=""
#default_device_hosts_dnsmasq_leases_file=""
~

11.我在做文件系统时自动设置系统在启动时去/apps/etc/init.d/里面去执行以S打头的文件,所以我在/apps/etc/init.d/里写了个easycwmp的配置脚本,使得不用每次都手动把库文件、exe文件都拷贝到相应目录下

首先需要将用到的.3服务器上的bash,getopt,jshn,curl,uci,ubusd放到开发板/apps/easycwmp/bin/里面,在编写脚本S23_cwmp

/apps/etc/init.d >: pwd
/apps/etc/init.d
/apps/etc/init.d >: vim S23_cwmp

#!/bin/sh

ifconfig eth0 192.168.1.23
route add default gw 192.168.1.1

mkdir -p /etc/easycwmp
mkdir -p /etc/config/
mkdir -p /lib/functions/

echo "----------------make link-----------------------"
ln -sf /apps/easycwmp/bin/easycwmpd /usr/sbin/easycwmpd
ln -sf /apps/easycwmp/scripts/easycwmp.sh /usr/sbin/easycwmp
ln -sf /apps/easycwmp/scripts/easycwmp /etc/config/easycwmp
ls -l /usr/sbin/easycwmpd
ls -l /usr/sbin/easycwmp
ls -l /etc/config/easycwmp

echo "----------------cp uci.sh to /lib/config/-----------------------"
mkdir -p /lib/config/
cp /apps/easycwmp/scripts/uci.sh /lib/config/uci.sh
ls /lib/config/uci.sh

echo "----------------cp ubusd to /usr/sbin-----------------------"

cp /apps/easycwmp/bin/ubusd /usr/sbin
ls /usr/sbin

echo "-----------------cp uci to /sbin--------------------------"
cd /sbin
cp /apps/easycwmp/bin/uci /sbin

ls /sbin/uci

cp /apps/easycwmp/bin/curl /usr/bin

cp /apps/easycwmp/bin/jshn /bin/

export UCI_CONFIG_DIR="/apps/easycwmp/scripts/"
export UBUS_SOCKET="/tmp/ubus.sock"

rm /bin/getopt
cp /apps/easycwmp/bin/getopt /bin/

rm /bin/sh
cp /apps/easycwmp/bin/bash /bin

ln -sf /bin/bash /bin/sh

写完这个脚本以后,

以上工作都做好后就可以启动服务器,我们可以执行easycwmp --json get name "" 0 来测试cpe支持的数据模型

你将看到

{ "parameter": "InternetGatewayDevice.", "fault_code": "", "writable": "0" }

{ "parameter": "InternetGatewayDevice.DeviceInfo.", "fault_code": "", "writable": "0" }

{ "parameter": "InternetGatewayDevice.DeviceInfo.Manufacturer", "fault_code": "", "writable": "0" }

{ "parameter": "InternetGatewayDevice.DeviceInfo.ManufacturerOUI", "fault_code": "", "writable": "0" }

{ "parameter": "InternetGatewayDevice.DeviceInfo.ProductClass", "fault_code": "", "writable": "0" }

{ "parameter": "InternetGatewayDevice.DeviceInfo.SerialNumber", "fault_code": "", "writable": "0" }

{ "parameter": "InternetGatewayDevice.DeviceInfo.HardwareVersion", "fault_code": "", "writable": "0" }

{ "parameter": "InternetGatewayDevice.DeviceInfo.SoftwareVersion", "fault_code": "", "writable": "0" }

{ "parameter": "InternetGatewayDevice.DeviceInfo.UpTime", "fault_code": "", "writable": "0" }

{ "parameter": "InternetGatewayDevice.DeviceInfo.DeviceLog", "fault_code": "", "writable": "0" }

{ "parameter": "InternetGatewayDevice.DeviceInfo.SpecVersion", "fault_code": "", "writable": "0" }

{ "parameter": "InternetGatewayDevice.DeviceInfo.ProvisioningCode", "fault_code": "", "writable": "1" }

......

最后启动easycwmpd链接我们的openacs

/ >: easycwmpd -b -f
config_init_local(53):: easycwmp.@local[0].interface=eth0
config_init_local(63):: easycwmp.@local[0].port=7547
config_init_local(81):: easycwmp.@local[0].ubus_socket=/var/run/ubus.sock
config_init_local(69):: easycwmp.@local[0].username=easycwmp
config_init_local(75):: easycwmp.@local[0].password=easycwmp
config_init_acs(149):: easycwmp.@acs[0].scheme=http
config_init_acs(155):: easycwmp.@acs[0].username=openacs
config_init_acs(161):: easycwmp.@acs[0].password=openacs
config_init_acs(167):: easycwmp.@acs[0].hostname=192.168.1.21
config_init_acs(177):: easycwmp.@acs[0].port=8080
config_init_acs(183):: easycwmp.@acs[0].path=/openacs/acs
config_init_acs(189):: easycwmp.@acs[0].periodic_enable=0
config_init_acs(195):: easycwmp.@acs[0].periodic_interval=180
config_init_acs(201):: easycwmp.@acs[0].periodic_time=1
main(285): ubus initialization failed
+++ HTTP SERVER CONFIGURATION +++
ip: '192.168.1.23'
port: '7547'
--- HTTP SERVER CONFIGURATION ---
+++ HTTP CLIENT CONFIGURATION +++
http_client_init(49):: url: http://openacs:openacs@192.168.1.21:8080/openacs/acs
http_client_init(55):: ssl_verify: SSL certificate validation disabled.
--- HTTP CLIENT CONFIGURATION ---
* Trying 192.168.1.21...
* Connected to 192.168.1.21 (192.168.1.21) port 8080 (#0)
> POST /openacs/acs HTTP/1.1
Host: 192.168.1.21:8080
User-Agent: easycwmp
Content-Type: text/html; charset=utf-8
Content-Length: 3093
Expect: 100-continue

< HTTP/1.1 100 Continue
< HTTP/1.1 200 OK
< Server: Apache-Coyote/1.1
< X-Powered-By: Servlet 2.4; JBoss-4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)/Tomcat-5.5
* Added cookie JSESSIONID="8DF48CC9C05B85888FB1DA4D7BEB0298" for domain 192.168.1.21, path /, expire 0
< Set-Cookie: JSESSIONID=8DF48CC9C05B85888FB1DA4D7BEB0298; Path=/
< Content-Type: text/html;charset=utf-8
< Content-Length: 565
< Date: Thu, 16 Apr 2015 07:28:33 GMT
<
+++ RECEIVED HTTP RESPONSE (PART) +++
<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header><cwmp:ID SOAP-ENV:mustUnderstand="1">1</cwmp:ID><cwmp:NoMoreRequests>0</cwmp:NoMoreRequests></SOAP-ENV:Header><SOAP-ENV:Body><cwmp:InformResponse xmlns:cwmp="urn:dslforum-org:cwmp-1-0"><MaxEnvelopes>1</MaxEnvelopes></cwmp:InformResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>--- RECEIVED HTTP RESPONSE (PART) ---
* Connection #0 to host 192.168.1.21 left intact
+++ RECEIVED HTTP RESPONSE +++
<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header><cwmp:ID SOAP-ENV:mustUnderstand="1">1</cwmp:ID><cwmp:NoMoreRequests>0</cwmp:NoMoreRequests></SOAP-ENV:Header><SOAP-ENV:Body><cwmp:InformResponse xmlns:cwmp="urn:dslforum-org:cwmp-1-0"><MaxEnvelopes>1</MaxEnvelopes></cwmp:InformResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>--- RECEIVED HTTP RESPONSE ---
* Found bundle for host 192.168.1.21: 0x3a630
* Re-using existing connection! (#0) with host 192.168.1.21
* Connected to 192.168.1.21 (192.168.1.21) port 8080 (#0)
> POST /openacs/acs HTTP/1.1
Host: 192.168.1.21:8080
Cookie: JSESSIONID=8DF48CC9C05B85888FB1DA4D7BEB0298
User-Agent: easycwmp
Content-Type: text/html; charset=utf-8
Content-Length: 0

< HTTP/1.1 200 OK
< Server: Apache-Coyote/1.1
< X-Powered-By: Servlet 2.4; JBoss-4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)/Tomcat-5.5
< Content-Type: text/html;charset=utf-8
< Content-Length: 566
< Date: Thu, 16 Apr 2015 07:28:33 GMT
<
+++ RECEIVED HTTP RESPONSE (PART) +++
<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header><cwmp:ID SOAP-ENV:mustUnderstand="1">ID:intrnl.unset.id.GetRPCMethods1429172913264.21275235</cwmp:ID><cwmp:NoMoreRequests>0</cwmp:NoMoreRequests></SOAP-ENV:Header><SOAP-ENV:Body><cwmp:GetRPCMethods xmlns:cwmp="urn:dslforum-org:cwmp-1-0"/></SOAP-ENV:Body></SOAP-ENV:Envelope>--- RECEIVED HTTP RESPONSE (PART) ---
* Connection #0 to host 192.168.1.21 left intact
+++ RECEIVED HTTP RESPONSE +++
<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header><cwmp:ID SOAP-ENV:mustUnderstand="1">ID:intrnl.unset.id.GetRPCMethods1429172913264.21275235</cwmp:ID><cwmp:NoMoreRequests>0</cwmp:NoMoreRequests></SOAP-ENV:Header><SOAP-ENV:Body><cwmp:GetRPCMethods xmlns:cwmp="urn:dslforum-org:cwmp-1-0"/></SOAP-ENV:Body></SOAP-ENV:Envelope>--- RECEIVED HTTP RESPONSE ---
* Found bundle for host 192.168.1.21: 0x3a630
* Re-using existing connection! (#0) with host 192.168.1.21
* Connected to 192.168.1.21 (192.168.1.21) port 8080 (#0)
> POST /openacs/acs HTTP/1.1
Host: 192.168.1.21:8080
Cookie: JSESSIONID=8DF48CC9C05B85888FB1DA4D7BEB0298
User-Agent: easycwmp
Content-Type: text/html; charset=utf-8
Content-Length: 1120
Expect: 100-continue

< HTTP/1.1 100 Continue
< HTTP/1.1 204 No Content
< Server: Apache-Coyote/1.1
< X-Powered-By: Servlet 2.4; JBoss-4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)/Tomcat-5.5
< Date: Thu, 16 Apr 2015 07:28:33 GMT
<
* Connection #0 to host 192.168.1.21 left intact
+++ RECEIVED EMPTY HTTP RESPONSE +++

启动浏览器地址栏中输入http://192.168.1.21:8080/openacs/acs,点击find cpe

输入Serial No,点击Dedails

说明我们的easycwmp在开发板上跑起来了。

 

easycwmp在开发板上的配置的更多相关文章

  1. 开发板上如何配置apahe2+mysql+php7

    1,安装apache2 sudo apt-get install apache2 修改webroot vim /etc/apache2/apache2.conf #在其中复制最后一个 <Dire ...

  2. FS210开发板上Qt4.7.0移植过程

    作者:冯老师,华清远见嵌入式学院讲师. 1. 搭建Qt开发环境平台 1.开发环境:ubuntu 12.04 2.交叉编译链:arm-cortex_a8-linux-gnueabi 3.开发板:FS21 ...

  3. 开发板上使用core文件调试

    转载:http://www.nginx.cn/1521.html 如果开发板的操作系统也是linux,core调试方法依然适用.如果开发板上不支持gdb,可将开发板的环境(依赖库).可执行文件和cor ...

  4. DE1-SOC开发板上搭建NIOS II处理器运行UCOS II

    DE1-SOC开发板上搭建NIOS II处理器运行UCOS II   今天在DE1-SOC的开发板上搭建NIOS II软核运行了UCOS II,整个开发过程比较繁琐,稍微有一步做的不对,就会导致整个过 ...

  5. 物联网操作系统HelloX已成功移植到MinnowBoard MAX开发板上

    在HelloX开发团队的努力下,以及Winzent Tech公司(总部在瑞典斯德哥尔摩)的支持下,HelloX最新版本V1.78已成功移植到MinnowBoard MAX开发板上.相关源代码已经发布到 ...

  6. 运行在TQ2440开发板上以及X86平台上的linux内核编译

    一.运行在TQ2440开发板上的linux内核编译 1.获取源码并解压 直接使用天嵌移植好的“linux-2.6.30.4_20100531.tar.bz2”源码包. 解压(天嵌默认解压到/opt/E ...

  7. 【Android 系统开发】 编译 Android文件系统 u-boot 内核 并烧写到 OK-6410A 开发板上

    博客地址 : http://blog.csdn.net/shulianghan/article/details/40299813  本篇文章中用到的工具源码下载 : -- ok-6410A 附带的 A ...

  8. 02.将uboot,kernel,rootfs下载到开发板上

    转载,侵删 将uboot,kernel,rootfs下载到开发板上 1.为什么要下载 所谓下载,也称烧录,部署. 1.1.什么是u-boot Hi3518EV200 单板的 Bootloader 采用 ...

  9. SoC FPGA开发板的FPGA配置数据下载和固化

    小梅哥编写,未经许可,严禁用于任何商业用途 2018年7月2日星期一  soc fpga的烧写和固化方式与传统的纯fpga固化方式即存在形式上的相同,也存在细节上的差异,特整理此文. AC501-So ...

随机推荐

  1. javascript:window.history.go(-1)

    history是你浏览过的网页的url(简单的说就是网址)的集合,也就是你的浏览器里的那个历史记录.它在js里是一个内置对象,就跟document一样,它有自己的方法,go就是其中一个. 这个方法的参 ...

  2. unix basic command

    1. get start Command Example Description ls ls ls -a ls -l 输出目录文件 输出文件包括隐藏文件 输出文件详细信息 pwd pwd show p ...

  3. django进行model字段的自定义

    相信大家一定有web应用被攻击的经历,数据库安全是一个网站的必须课.django有很好的orm,但sql注入,或其他方式的攻击都是无法完全屏蔽的. 所以一般数据库都会对用户数据,如text类型的数据进 ...

  4. 算法练习:寻找最小的k个数

    参考July的文章:http://blog.csdn.net/v_JULY_v/article/details/6370650 寻找最小的k个数题目描述:查找最小的k个元素题目:输入n个整数,输出其中 ...

  5. 如何快速在当前目录打开cmd命令提示符

    对于稍微熟悉电脑一些的朋友来说.cmd绝对是个很方便的东西.但是每次使用cmd都要cd半天才能到当前目录.怎么快速打开当前目录呢? 当前目录按住shift再右键.然后会看到右键菜单里有一个" ...

  6. 用jQuery做一个三级菜单,鼠标移动到二级菜单的选项上,然后再迅速离开后,当鼠标再移动到该一级菜单或其他二级菜单选项,三级菜单也会显示。

    用jQuery做一个三级菜单,鼠标移动到二级菜单的选项上,然后再迅速离开后,当鼠标再移动到该一级菜单或其他二级菜单选项,三级菜单也会显示. 原因:在为一个元素绑定hover事件之后,用户把光标移入元素 ...

  7. 写简单游戏,学编程语言-python篇

    好吧, 首先得承认这个题目写的夸大了,人才菜鸟一枚,游戏相关编程也是知道点概念.但是本人对游戏开发比较感兴趣,相信大多数喜欢玩玩游戏,因为它给人确实带来很多乐趣,而编程语言的学习最少对于我来说比较乏味 ...

  8. JQUERY 知识点的自我总结

    一.名词释义 1 .js的入口函数:要等待文档树的加载完成,并且等待所有图片.文件都加载完成之后才开始执行. 2  .jquery入口函数会等待文档树的加载完成,并不会等待图片还有文件的加载 3 .j ...

  9. Gear VR开发

    下载安装Unity开发工具,要求Unity 5.3.0 或更高版本         下载Oculus签名,做Gear VR交互功能模块.关于输入交互,可以下载VR Samples(地址:https:/ ...

  10. [转]OOAD基本概念

    转载地址:http://www.cnblogs.com/zfc2201/archive/2012/12/09/2810532.html 尊重原作者,转载请注明 学习目标: 1.理解与掌握面向对象的概念 ...