• CentOS_7 OpenWrt Eclipse 环境搭建与 Dr.com 开发笔记


    一:内核的编译.

    1,linux 编译环境的搭建与源码的准备工作

    2,常用软件的安装 (make menuconfig)

    3,  针对TP-Link WR740N 一些软件的openwrt 的移植

    4,内核的编译

    二:OpenWrt  Eclipse 编译环境的搭建

    1,OpenWrt 平台依赖包的安装

    2,Eclipse 环境的配置

    3, 远程调试设置

    三:OpenWrt 上 dr.com移动的编写与移植

    1,源码的分析

    2,源码的移植

    3,功能的实现

    4,程序的运行与安装

    四,参考

     

    一:1,编译环境的搭建与源码的准备工作

    内核的编译需要在linux环境下进行,所以预先安装该系统.针对CentOS需要预先安装相应的依赖包.

    yum install subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel make patch unzip perl-ExtUtils-MakeMaker  glibc glibc-devel glibc-static 
    quilt ncurses-lib sed sdcc intltool sharutils bison wget git-core openssl-devel xz 
    

    通过git获取源码,源码的地址可以GOOGLE搜索自己需要的版本.源码从这里下载    https://downloads.openwrt.org/

    git clone git://git.openwrt.org/14.07/openwrt.git
     

    进入源码目录并下载相关软件包

    cd openwrt
    ./scripts/feeds update -a
    ./scripts/feeds install -a
    

    2,常用软件的安装 (make menuconfig)

    linux 内核的配置相对比较人性化,使用make menuconfig大大简化了操作.

    make defconfig
    make prereq
    make menuconfig
    

    具体软件的选择可以参考这里 http://www.right.com.cn/forum/thread-83746-1-1.html,不再做多于介绍.如果不想添加什么软件,可以简单做以下修改:

    Target Systme--->  修改为自己的平台cpu型号

    Target Profile --->修改为自己的型号,我的是TP-LINK WR740N

    Target Images ---> suashfs --->

    LuCI ---> Collection ---> luci

    LuCI--->  Applications--->luci-app-samba

    完成之后退出保存即可.

    3,针对TP-Link WR740N 一些软件的openwrt 的移植

    对于国内的型号和国内的型号略有不同,所以原源码的端口部分需要做简单修改.

    (1)解决WAN 口在 LAN4位置的错误.找到文件mach-tl-wr741nd-v4.c,在目录(你源码的目录)/target/linux/ar71xx/files/arch/mips/ath79/下,将代码  ath79_setup_ar933x_phy4_switch(true, true); 改为ath79_setup_ar933x_phy4_switch(false, false);或者直接删掉.

    (2)解决灯位置不对的问题.LAN4 的灯在 WAN的位置,只需要修改上面文件的宏定义部分,将TL_WR741NDV4_GPIO_LED_WAN 修改为 17, TL_WR741NDV4_GPIO_LED_LAN4 修改为13即可.

    (3)打开wifi 开关,  package/kernel/mac80211/files/lib/wifi/mac80211.sh  看到 REMOVE THIS LINE TO ENABLE WIFI ,所以需要注释掉下面的一行代码便可以使能WIFI了.

    (4)修改flash 大小.修改 ./tools/firmware-utils/src/mktplinkfw.c 将WR740对应的关联字段 "4" 和 "4m"  改成 "8" 和"8M".

    修改   ./target/linux/ar71xx/image/Makefile, 把740nd最后的4Mlzma改成了8Mlzma或16Mlzma  .

    4,内核的编译

    内核编译过程中需要联网,会下载大量的编译依赖包,部分URL会下载不了,可以到这里下载http://dl.zjuqsc.com/router/openwrt/dl/    放到源码目录下   ./dl   目录即可.

    使用这个命令进行编译         make -j5 V=99 2>&1 |tee build.log |grep -i error  ,日志会在当前 源码目录,对于第一次编译最好不使用  -j  参数,便于出错时会错误查找.内核的编译大概需要几个小时,依机器和网络环境.

    二:1,OpenWrt 平台依赖包的安装

    为了实现openwrt的在线调试,openwrt端需要安装一些 ipk包,可以到这里下载(https://downloads.openwrt.org/)根据自己对应版本下载相应的包,需要下载的包如下:

    (1),DropBear or OpenSSH installed & connections can be established

    (2),libstdcpp (optional for C++)

    (3),openssh-sftp-server

    (3),gdbserver

    (4),libthread-db

    将包下载到拷贝到openwrt的samba服务器的目录(提前搭建好的),然后使用命令  opkg install 你的包.ipk 如果需要什么包下载安装即可,不得不说openwrt依赖包这块做的还是相当不错的.

    2,Eclipse 环境的配置 

    官方有关于Eclipse 相关配置的说明,不过内容过于老旧.到博客时间最新的版本为eclipse-cpp-luna-SR2-linux-gtk-x86_64.tar.gz, 可以从这里下载关解压下载的软件,放到相应的目录.便完成了安装.

    最新版本的Eclipse 已经集成了 Crosss Compiler 和 Remote System Explorer的功能.

    新建工程 Create a new project: Menu → File → New C++ Project ,一直 next 直到这里,按照你的 CPU添加.

    可以新建一个内置的 hello world 工程测试自己配置是否正确,如果正确,编译会是下面这个结果.

    23:58:57 **** Rebuild of configuration Debug for project openwrt_test ****
    Info: Internal Builder is used for build
    mips-openwrt-linux-g++ -O0 -g3 -Wall -c -fmessage-length=0 -o src/openwrt_test.o ../src/openwrt_test.cpp 
    mips-openwrt-linux-g++ -o openwrt_test src/openwrt_test.o
    
    23:58:59 Build Finished (took 2s.533ms)
    

    3,远程调试设置  

    打开 Remote System Explorer ,右键Local -->new 出现下面这个对话框,选择 linux.

     

    填写你远程主机的IP地址, connection name可以填写容易区分的名子.

    选择 ssh.files.

    选择 processes.shell.linux.

    选择 ssh.files.

     

    右键你的远程连接,connect,输入密码即可连接. 对于要求设置 storage 的 password 可以不用管,cancel即可.成功连接之后右键 Ssh Terminal-->Launch Terminal 会显示下面这个状态,表示已经连接成功.

    下面进行运行,和debug的一些设置. 右键工具栏, Debug-->Debug Configurations.

     右键 C/C++ Remote Application--->New . 在Main标签页栏, Connection选择已经建立的那个连接, 并设置Remote Absolute Path for C/C++ Application.(务必不要忘记)

     进入 Debugger 标签页,设置你的交叉 gdb 路径 (在你的工具链目录中).

     设置完成之后便可以进行在线调试,并会出现下面提示对话框.

     最终运行的效果如下图:

    三:1,Dr.com 源码分析与重构

    Linux版本的Drcom已经完成,在github仓库中有 CentOS x64_86版本和 OpenWrt 版本mips_AR7xxx_AR9xxx ,链接如下:

    https://github.com/sunke-github/Drcom8021x_linux

    https://github.com/sunke-github/Drcom8021x_Openwrt

    具体源码不做详细分析 ,后期将会添加  UML时序图,便于后面想阅读和修改代码的童鞋.

    参考:

    http://wiki.openwrt.org/doc/howto/buildroot.exigence

    https://github.com/coverxit/EasyDrcom

     

  • 相关阅读:
    Oracle的分区打点
    学习Struts2经验总结
    优化MVC,实现数据库表的记录的添加、删除、修改、查询。
    基于struts研究传值问题
    基于“MVC”框架集设计模式,开发用户管理系统!
    使用Struts,实现简单的登录
    QT学习4:使用窗口部件
    QT学习9:绘制函数
    QT学习8:准备战斗
    QT学习6:组装丰富的积木!
  • 原文地址:https://www.cnblogs.com/dreamfactory/p/4480379.html
Copyright © 2020-2023  润新知