在上个帖子里面,我们使用了比较偷懒的方式直接反编译的设备树然后修改,这样做方法是简单但并不是一个常规的方式,而且我们在添加led的部分,并不能直接引用gpio的标号,高低电平宏定义也没法用。
下面的测试是尝试修改Linux内核设备树文件添加一个LED的控制,然后重新编译生成设备树 ,目的是点亮一个LED。
1、修改编译Linux内核之前要做的准备工作
1)the SDK is installed
2)the SDK is started up
3)the Linux kernel is installed
在Ubuntu1604上已经安装好了SDK和Linux内核
接下来设置运行环境参数:
source SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
验证各个环境参数是否正确 mkdir -p ../build make ARCH=arm O="$PWD/../build" multi_v7_defconfig fragment*.config
for f in `ls -1 ../fragment*.config`; do
scripts/kconfig/merge_config.sh -m -r -O $PWD/../build
$PWD/../build/.config $f; done yes '' | make ARCH=arm oldconfig O="$PWD/../build"
2、配置bulid 目录
进入到Linux内核目录linux-4.19.94并创建一个同级build 目录
复制代码下面命令循环配置一些模块碎片
复制代码
上面这个步骤 可以参考 Linux内核里面的文件:/stm32mp1-openstlinux-20-02-19/sources/arm-ostl-linux-gnueabi/linux-stm32mp-4.19-r0/README.HOW_TO.txt
3、修改设备树文件
这次要点的灯是橙色的LD7 和PH7相连接,高电平点亮
找到设备树文件 arch/arm/boot/dts/stm32mp157a-dk1.dts 添加下面的部分
4、编译设备树
进入到编译文件夹bulid 输入make dtbs
如果编译出现下面的错误
fatal error: openssl/bio.h: No such file or directory
可以用下面的方式解决:
sudo apt-get install libssl-dev来安装libssl-dev即可
编译后的输出
将生成的stm32mp157a-dk1.dtb 部署到开发板上
重启开发板,可以看到橙色的LD7和蓝色的LD8同一个节奏闪烁!