第七期 使用Qemu+Buildroot+Eclipse打造一个优雅的开发环境 《虚拟机就是开发板》

        这一期的主题是使用虚拟机作为应用层开发的环境搭建。之前我们使用busybox和手动添加一些必要文件创建了一个简陋的文件系统,这一期我们把它替换成Buildroot,代码编辑工具我们也升级为Eclipse。
        对于嵌入式的开发过程,痛点就是需要交叉编译,本地编写和编译,然后目标开发板上调试和运行。我们这一期争取把这些环节串联起来,形成一个优雅的整体。

        首先需要下载Buildroot,我这里使用的是2017.02.3版本,下载地址 www.buildroot.org Buildroot在配置完成后可以自动化的生成我们需要的交叉工具链和root文件系统。有关Buildroot的介绍和相关教程给大家介绍个比较详细的第三方教程

 http://free-electrons.com/doc/training/buildroot/ 

国外的IT培训机构和国内的IT培训机构走的路线完全不同,清爽的界面便可见一斑。

        Buildroot下载和解压后可以通过 make menuconfig 进行配置,不过Buildroot 的configs目录下已经有很多针对特定目标开发板的配置文件,和Kernel的defconfig一个原理,我们在Build根目录下直接运行  make qemu_arm_vexpress_defconfig 就可以将配置信息导入,然后再使用 make munuconfig 进入做一些调整。
        Toolchain --> Build cross gdb for the host  选择该项 增加工具链生成gdb调试程序
        Toolchain --> Thread library debugging 选择该项 增加工具链对debug的支持
        Toolchain --> Enable C++ support 选择该项 增加工具链对C++的支持
        Target packages --> Debugging, profiling and benchmark --> gdb 选择该项 增加目标文件系统中gdbserver
        Target packages --> Networking applications --> openssh 选择该项 添加ssh服务
        System configuration --> Root password 进入该项,设置一个root用户的密码
然后 save 后,运行 make 进行编译。
        编译成功后,在Buildroot目录下就会生成output文件夹,并有一下几个子目录
                build 这个目录是Buildroot编译时的临时文件夹,所有编译相关的文件都保存在这里;
                host 这个目录是用于host的文件,主要就是本地运行的交叉编译工具;
                images 这个目录就是生成的目标镜像,根据配置需求的不同可能有 uboot, kernel img, rootfs; 
                staging 这个目录是一个软链接,指向sysroot 包含一些开发文件,我们用到的第三方库的头文件可以在这里找到
                target 这个目录就是目标板的根文件系统,images里面的rootfs.ext*就是通过这个文件夹打包生成的
        
        目标系统生成后就可以运行qemu来执行我们刚才生成的images了,进入images目录,将 https://github.com/aggresss/LKDemo/tree/master/qemu.d 目录中的 tap30.sh , run_linux_with_network.sh 和 update_buildroot.sh 复制到 images 目录下,首先运行tap30.sh 生成主机的虚拟网卡;因为高版本的qemu不支持vexpress开发板的ext2文件镜像直接启动,所以我们还需要将前几期生成的 vexpress.img 文件也复制到images目录下,然后运行 update_buildroot.sh 将 vexpress.img文件更新为buildroot生成的文件系统,执行成功后运行  ./run_linux_with_network.sh 便可以运行buildroot生成的linux了。
        进入目标板 配置网络,编译 /etc/network/interfaces文件配置制定的IP,同时修改 /etc/ssh/sshd_config 文件 增加 PermitRootLogin yes 选项,然后重启目标板就可以通过ssh登陆目标板了。
        接下来就是eclipse登场了,下载eclipse CDT版本 同时安装 TM(target management) 插件 http://www.eclipse.org/tm/  安装后eclipse就多了一个 Remote System Explorer 的 perspective ,然后新建一个连接,链接到目标开发板皆可,链接类型选择 Linux , subsystem 中的 file,process,shell都使用ssh形式连接。

        接下来就可以通过eclipse新建一个c/c++工程,配置好交叉工具链,工具链指向buildroot的output/host/目录中的bin文件下。






接下来就可以将生成的bin文件通过 C/C++ Remote Application 的方式调试并运行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值