差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
后一修订版两侧同时换到之后的修订记录
digi:arm-embedded:linux:dey:dey-kernel-development [2022/03/16 08:50] – 创建 robindigi:arm-embedded:linux:dey:dey-kernel-development [2022/03/16 21:52] robin
行 1: 行 1:
 ====DEY 系统开发流程==== ====DEY 系统开发流程====
 认识一些目录,以cc6ul为例: 认识一些目录,以cc6ul为例:
 +通常,搭建好环境后,我们会先编译一下镜像,比如:
 +
 +bitbake core-image-base
 +
 +编译完成后,记录一下这些目录内容:
 +Linux总目录是这个tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0,注意,它是总目录,而非内核源码目录,事实上,它下面有一个git目录就是指向内核源码的链接。
 +{{:digi:arm-embedded:linux:dey:pasted:20220316-213215.png}}
 +
 +Linux内核源码目录位于:tmp/work-shared/ccimx6ulsbc/kernel-source ,这个目录和https://github.com/digi-embedded/linux.git是一样的。
 +
 +Linux内核编译的结果主要是在,在编译时自动生成的.config就是位于这里:
 +tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0/build
 +{{:digi:arm-embedded:linux:dey:pasted:20220316-215131.png}}
 +
 +
 +
 +
 +
 +
 +**************************
 +
 bitbake -c compile virtual/kernel bitbake -c compile virtual/kernel
 +
 编译的结果在 编译的结果在
 +
 tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0/build下 tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0/build下
 +
  
 而如果我们用bitbake -c devshell virtual/kernel ,实际上在这个devshell的初始路径是映射在tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0/git目录。总的来说tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0/是linux相关的目录,任何内核或BSP开发都在这个目录这下。 而如果我们用bitbake -c devshell virtual/kernel ,实际上在这个devshell的初始路径是映射在tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0/git目录。总的来说tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0/是linux相关的目录,任何内核或BSP开发都在这个目录这下。
  
-和以往的版本不同,如果我们进入devshell,编译完Linux内核后,\+和以往的版本不同,如果我们进入devshell,编译完Linux内核后, 
 ls -la ../build来查看一下编译结果的目录, ls -la ../build来查看一下编译结果的目录,
-在tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0下,默认并没有.config,\ + 
-因此,make dtbs会报错\+在tmp/work/ccimx6ulsbc-dey-linux-gnueabi/linux-dey/5.4-r0下,默认并没有.config, 
 + 
 +因此,make dtbs会报错
  
 为了能正常编译设备树,需要指定平台架构,这实际上也是有好处的,毕竟我们只要自己要开发的平台,让编译器把所有x86和其它厂家相关的东西都编译一遍也是一种浪费。 为了能正常编译设备树,需要指定平台架构,这实际上也是有好处的,毕竟我们只要自己要开发的平台,让编译器把所有x86和其它厂家相关的东西都编译一遍也是一种浪费。
行 26: 行 53:
 make ARCH=arm menuconfig make ARCH=arm menuconfig
 </code> </code>
 +如果要编译整个linux内核zImage,直接make, 对cc6要用的uImage则要make LOADADDR=0x10800000 uImage ,\
 +生成的内核在arch/arm/boot/zImage  
 +
 +编译设备树只需
 +make dtbs
 +
 +生成的设备树:\
 +arch/arm/boot/dts/imx6ul-ccimx6ulsbc-id135.dtb \
 +arch/arm/boot/dts/imx6ul-ccimx6ulsbc-wb.dtb \
 +
 +要清空git区变化,用git clean -dfx
 +
 +
 +1.刚编译完内核时的linux目录:
 +{{:digi:arm-embedded:linux:dey:pasted:20220316-090052.png}}
 +
 +2. 刚编译完内核时的linux的build目录
 +{{:digi:arm-embedded:linux:dey:pasted:20220316-090218.png}}
 +
 +3. 进入devshell后的ls -la
 +{{:digi:arm-embedded:linux:dey:pasted:20220316-090529.png}}
 +{{:digi:arm-embedded:linux:dey:pasted:20220316-090621.png}}
 +
 +更多参考:https://onedigi.atlassian.net/wiki/spaces/~descalon/pages/22461909723/Kernel+development