目录
一、环境搭建
1.1网络环境
1.2 文件传输环境搭建
1.2.1 nfs环境
1.2.2 tftp环境
1.3 源码环境搭建
1.4 代码托管
1.5 配置交叉编译工具链
二、 开发方式
2.1 内核、设备树、驱动
make mrproper
make 100ask_imx6ull_mini_defconfig编辑
make zImage -j4
make dtbs
cp 内核和设备树到nfs
make modules
make ARCH=arm INSTALL_MOD_PATH=/home/book/nfs_rootfs modules_install编辑
运行中替换内核、设备树和驱动
一、环境搭建
1.1网络环境
由于基于liteos-a内核可能遇到的问题比较多,我们基于linux内核做服务器开发。
先验证一下网络
没ip强制指定一下
给虚拟机添加双网卡,桥接网卡桥接到我的USB转网口上
然后ping一下windows不通,关闭防火墙再试一下
都通了
那个dhcp自动分配ip要把网线接到路由器器上才行。咱们这面现在是直接连电脑
1.2 文件传输环境搭建
windows: 192.168.5.100
ubuntu : 192.168.5.10
板子: 192.168.5.110
1.2.1 nfs环境
mount -t nfs -o nolock,vers=3 192.168.5.10:/home/book/nfs_rootfs /mnt
1.2.2 tftp环境
ubuntu的环境就不再说了,今天说说windows环境
设置目录和网卡的ip
具体什么样后面用的时候在展示。
1.3 源码环境搭建
这条长的不太容易打出来我复制到了下面。
repo init -u https://gitee.com/weidongshan/manifests.git -b linux-sdk -m imx6ull/100ask_imx6ull_mini_linux4.9.88_release.xml --no-repo-verify
下完了
太大了,linux的平台代码还是太多了,估计后面鸿蒙也会这样。
1.4 代码托管
给我们的项目搞个目录放到码云上托管
1.5 配置交叉编译工具链
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihfexport PATH=$PATH:/home/book/100ask_imx6ull_mini-sdk/ToolChain/arm-buildroot-linux-g
nueabihf_sdk-buildroot/bin
这样就okl
sudo chmod -R go+rwx /home/book
然后vscode垃圾我再也不用了,根本就无法跳转,阅读源码很不方便,弃v投s了好吧
同步一下文件,完美
二、 开发方式
2.1 内核、设备树、驱动
make mrproper
make mrproper
是 Linux 内核源代码树中的一个命令,用于清理内核构建目录。这个命令会删除所有编译生成的文件、配置缓存以及其他临时文件,确保下一次构建是从一个完全干净的状态开始的。
具体来说,make mrproper
会执行以下操作:
- 删除所有编译生成的对象文件、模块文件等。
- 删除
.config
文件(这是内核配置文件,记录了内核配置选项)。 - 删除
.config.old
文件(这是上一次的内核配置文件,用于比较配置变更)。 - 删除
.version
和Module.symvers
文件(这些文件记录了内核版本和模块符号信息)。 - 删除各种临时文件和目录。
相当于是强化版的make clean
make 100ask_imx6ull_mini_defconfig
会直接报错,估计环境变量哪里没配置好
这个配置文件在arm下
但是老师的长这样
book@100ask:~/100ask imx6ull mini-sdk/Linux-4.9.88$ make 100ask imx6ull mini defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
configuration written to .config
我们没有这些打印不知道会不会有问题
我对比了一下这里的.config和存在配置库里的内容一样,我就当他没问题先编译内核了
make zImage -j4
GG真坎坷,为什么会默认x86架构啊
用ARM编译还会报错离谱
我真是麻瓜啊,被一个问题痛击了两次,之前就遇到过这个情况,在另一个shell设置环境变量,不关闭的话一个更早开启的shell是没有对应的环境变量的。
还是不行,找不到gcc命令
坑爹啊,那到底是哪里的问题呢。
问题出现了,多打了个export
make dtbs
cp 内核和设备树到nfs
不知道为什么ls不好用了
把这些没用的删了也不行。
make modules
我丢啊,编译到一半虚拟机噶了
重启后没ip了,用ifconfig还配置不了,神奇。
sudo ip addr add 192.168.5.10/24 dev ens36
sudo ip link set ens36 up
我又重启了下开发板现在ls好啦
编译也没问题了
make ARCH=arm INSTALL_MOD_PATH=/home/book/nfs_rootfs modules_install
把驱动模块都cp到nfs
又卡死了,不知道为什么每次在开发板启动时去给nfs目录放东西开发板都会卡死。可能nfs卡住了。有可能是防火墙的问题,因为需要window做路由。防火墙关掉后果然好啦
运行中替换内核、设备树和驱动
cp /mnt/zImage /boot
cp /mnt/100ask_imx6ull_mini.dtb /root
cp /mnt/lib/modules /lib -rfd
sync
sync是写磁盘操作,防止要写入外存的数据没写入。
内核的编译时间是24年没问题了,但是时间不太对,仔细一看没改时区,我们改成上海就欧克了。
为什么是上海呢,大家在注册新虚拟机的时候有个选择时区,这里北京时间的话只能选上海。