嵌入式系统移植课笔记5Linux内核网卡移植(华)

我们除了CPU 有差异以外 , 外围的各种器件board 也是有差异的,
我找到最接近我们板子的 config 配置,
我们要选择一个跟我们功能配置最接近的config 文件,比如三星发布了三款样机,一款三针对平板,一款三针对手机,一款样机针对路由器,而你的产品是针对手机的,你可能比较可能拿了一款针对平板的或者针对路由器的,很多配置都不一样,你要做大量的移植, 所以选配的时候我们要选和我们产品最类似的,

如果你第一次编译uImage 并且运气好, 运行再板子上串口没有问题 可以打印出 CPU版本信息 , 串口输出信息, 只要你看到这些信息那恭喜你,移植内核的第一个大关口 过了, 也就是说. 这个产品支持CPU 支持串口 ,内存是支持的能看到相关的信息, ,但是如果说你运行内核 板子上电运行uImage 这个屏幕是黑的 ,什么信息都没有, 那这个怎么办 ?
那就是第二个问题, 移植对串口的支持, 是不是串口搞错了, 设置得CON2 你用得CON3, 或者地址搞错了

有了串口信息之后就方便你后面得调试了, 如果串口不好, 后面得网卡 摄像头, 移植得时候 没有串口信息帮助, 你怎么知道正常不正常,

移植得工作量, 根据公司得 定制化程度来决定得 ,如果你网卡换了,串口换了 ,usb换了, sd卡换了,换了很多,那工作量就很大.

1.内核选配置 然后编译 , 不顺利得话还要配置一下串口
2.移植改过得设备, 比如网卡移植
3.驱动移植

Linux 内核 配置编译

+在这里插入图片描述

刚才官网下载 Linux 内核 过后找一个最类似的配置,选配过后编译生成我们的uImage , 我们选择一个官方的配置和开发板最接近的,这个配置包括对cpu的支持对外围器件的支持,和最大限度的相似,一般厂商在生产出来cpu过后它都会做个样机,然后把这个样机相关的内容和内核相关的配置, 比如正cpu外面接内存接flash怎么接怎么选配接网卡接摄像头怎么接它都会有一个参考配置,而我们很多公司在开发产品的时候也是去找方案提供商提供的方案和原厂的芯片厂商发布的开发板方案是类似的,我们在它的基础上做一下修改,每个公司可能修改的情况不一样,但是都是基于它作修改,所以我们下载内核过后第一件事情就是选配,进行配置编译,

如果不进行配置 默认是编译 x86 得, 所以这个时候就需要,需要我们去选配一下, 并且我们linux内核默认支持x86的 那么你要编译生成我们的这个arm系列的 A9 4412的这个cpu我们知道不同的cpu他的交叉编译工具链是不一样的, 所以编译的时候你要指定我们的交叉编译工具链, 所以我们要先改一下交叉编译工具链,

arm发布的配置文件目录在,arch/arm/configs/
arm发布的配置他的配置文件都放在configs 下面, 它的配置很多你找一下哪一个配置文件是对应你的,我们看电路图上官网去对比,或者,问 4412这个cpu的这个厂商技术支持,

我们最终得到的是exynos_defconfig 这个配置文件,你需要导入这个配置, 这个配置是配置好的,比如对内存对flash ,串口都是配置好的,你没有必要重新去配,重新去配的话会很麻烦很累,我们直接导入他的配置就可以了。
在这里插入图片描述
在它的基础上进行改,
导入的时候 直接 make exynos_defconfig
在这里插入图片描述
直接导入出错了,这里的出错原因告诉我们,这个默认的是x86系列的,

我们需要在Makefile里面改一下它是针对哪个系列的cpu,把交叉编译工具改一下,
我们vim Makefile 找CROSS
你可以在文件中直接改,也可以通过命令参数的形式去改,
make ARCH=arm CROSS_COMPILE=arm-none-gnubi-
在这里插入图片描述
但是用命令去改的话,你每次去编译的时候会很麻烦,很长, 我们一般在Makefile里面写死,
在这里插入图片描述
我们把cpu设置好之后,再次进行config的导入,make exynos_defconfig
在这里插入图片描述
configuration written to .config
意思是导入进来了,变成了当前的配置,当前配置就是 .config
接着我们要激活一下这个配置,
make menuconfig
你要是什么也不改,好像也得敲这个命令进去menuconfig菜单进行激活一下

移植第一个原则 :下载的内核能在板子上运行起来,能够输出信息显示出来,你要保证少修改代码甚至不修改, 改的越少越不容易出错, 等你的串口有输出了你再去做相应的配置,

我们直接make uImage进行编译,
在这里插入图片描述
在这里插入图片描述

我们把编译好的uIamge 拷贝到tftp服务目录下,
编译完过后,3.14内核的它是 uImage包括cpu相关的信息, 但是cpu和外围的各个设备 都是在设备树里面描述的,没有设备树,这个cpu是运行不了的,不像以前的版本,外围设备的描述都是包含在内核里面的, 在这里是分开的,cpu的外围设备都是通过设备树来描述的,所以我们还要去编译一下我们的设备树,
make dtbs
在这里插入图片描述
我们这里的设备描述是跟origen.dtb ,这个文件类似的, 我们把这个设备树文件拷贝到tftp服务目录下

然后我们把板子上bootcmd 上的信息也配置好然后,加载到板子上去运行

内核编译得主要目的 就是要实现,
官网下载得linux 内核能在开发板上运行 cpu支持 ,可以输出串口信息, 但是我们发现 内核报了这样一个错误
在这里插入图片描述
在这里插入图片描述
思考一下, 板子上电得时候 首先是运行bootloader 然后不干预, 进入自启动模式, bootloader下载我们得内核,下载完成之后接着下载我们得设备树 , 运行我们得内核 ,
出现 , 内核是有输出但是,到这里报错误,说 不能挂载根文件系统,

为什么呢 ?
前面讲环境搭建的时候,讲到nfs服务, 前面采用的方式是tftp起来过后下载内核,下载内核成功过后接着,我们再通过内核去挂载我们的根文件系统,, 而我们根文件系统是通过bootargs 参数来指

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值