在进行Linux应用开发的过程中,往往需要交互工具。和谁交互?当然是嵌入式板卡。
之前说过Linux开发一般需要交叉编译,我们在平台A上编译能在平台B上用的东西,对于大型工程一次开发完成是不现实的,往往需要调试,而调试需要软件运行,当软件运行在平台B上时,我们操作的平台A该如何对他进行调试呢?就是用交互工具了,也就是交叉调试工具,可以是硬件也可以是网络。
在此之前先熟悉一些基础概念
嵌入式开发流程
大致可分为三部分系统开发、硬件开发、软件开发。
系统开发
需要对需求进行分析,选择合适的处理器和架构以及系统。我在这方面并不熟悉,我只能接触到很局限的几块板子。
选型等过程结束后,接下来就是为板卡安装系统,这其中涉及到uboot设计,还需要根据需求裁剪内核,也就是所谓的系统移植。
以上个人理解,欢迎补充或纠正
硬件开发
在一块具备了操作系统的板卡上,还需要进行各类硬件的驱动开发,实现各自硬件的基础功能,这部分往往和系统开发联系紧密。这部分我认为应该作为另一大知识体系单独学习。
软件开发
与传统软件一样,存在需求分析,概要设计,详细设计,实现和测试等流程。需求和设计部分暂且不说,软件开发就是两大部分交叉编译和交叉调试。关于交叉编译相关内容之前已经学习过,而交叉调试,其概念便是开篇提到的。
交叉调试方法,有硬件和软件。
软件,例如gdb调试器,或者利用串口,网络通信等方法实现
硬件,则是各种调试器,笔者用过的一种就是JTAG,硬件调试往往功能强大,但价格昂贵。
交互环境开发
交叉编译环境已经准备好了,我们还需要准备交叉调试环境,对于就本地开发应用的朋友,可以跳过,也可以看看做个参考。在华清远见的教程中还涉及对内核的编译和uboot相关知识,我个人认为这里是用不上的,这部分应该作为驱动开发的前置知识,所有笔者并没有做笔记。
可能遇到的错误
E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?
我们可以通过重启apt服务或者强制解锁方式,还有别的但这两种是我惯用
重启apt
sudo systemctl restart apt-daily.service
强制解锁(推荐,没遇见什么后遗症)
sudo rm /var/lib/dpkg/lock-frontend //删除锁文件
sudo rm /var/lib/dpkg/lock //删除另一个潜在锁(一般用第一个就行)
NFS服务
安装NFS服务
sudo apt-get install nfs-kernel-server rpcbind
在用户目录下为nfs创建一个文件夹
配置nfs功能
sudo vi /etc/exports
在末尾添加
/home/tunx/linux/nfs *(rw,sync,no_root_squash) //根据实际情况来
重启nfs功能
sudo /etc/init.d/nfs-kernel-server restart
SSH服务
开启SSH服务就可以使用shell在Windows下登录ubuntu,首先是安装
sudo apt-get install openssh-server
推荐一篇博客,很全面。
最后,关于内核编译,uboot移植等等,我准备等应用开发基础这部分结束了,另做记录