U-BOOT和内核的编译和nfs配置
- u-boot.map
U-boot映像的符号表(方便源码跟踪)
- u-boot
U-Boot 的ELF格式
- u-bootbin
U-Boot映像原始的二进制格式(烧录用)
注意exynos4412加入BLI
- u-boot.srec
U-Boot映像的S-Record格式
- 交叉编译工具准备
1 | 解压交叉编译工具到/opt目录 |
系统环境变量文件图示:
- 编译u-boot指令
1 | 生成make相应的配置文件.config硬件相关 |
ARCH=:指定CPU平台,CROSS_COMPILE:指定交叉编译器
也可以将以上指定平台信息和编译工具信息直接添加到makefile里面:
设置后可直接可使用 make imx_v6_v7_defconfig、make zImage,不需要make时指定硬件平台和编译器

1.从上面可以看出,u-boot和内核的编译都是先通过make [配置文件],生成好.config文件,再 make zImage或者make uboot(会现读取.config里面平台相关的配置信息)。
- 编译设备树文件
1 | make dtbs |
所有的make结束后生成的目标文件都会在编译结束时打印,通过打印的信息可以找到生成的目标文件。
u-boot源码目录
…board目录:与芯片厂商发布的Demo板子相关的
…common:与平台无关的
查看第一条程序代码:u-boot.lds
.lds是编译过程的链接文件

u-boot tftp客户端和nfs的配置
1 | 设置输出为串口0, 波特率115200, 初始化启动的第一个程序linuxrc, nfs的ip和路径, 本机的ip |
1.bootz:启动zImage、bootm:启动uImage,注意 “,” 之间的两个参数不能有空格
2.uboot在启动后会把bootargs参数传给内核,内核通过解析参数直到去哪里挂载rootfs。
tftp客户端、nfs配置示例

需要在服务器上安装tftp服务和nfs服务,这里的nfs的目录是/var/lib/tftpboot,如果遇到权限问题,使用chmod 777 /var/lib/tftpboot设置nfs文件夹权限为所有用户可读写。
nfs服务器目录配置
1 | /var/lib/tftpboot *(rw,async,subtree_check,no_root_squash) |

- 修改内核串口波特率
linux-4.14的默认串口波特率是9600,通过修改/home/hyl/imx6ull/linux-4.14/drivers/tty/serial/serial_core里面的uart_poll_init()函数修改波特率
移植网卡驱动
因为官方Demo内核里面没有我们开发板搭载的网卡驱动,网卡不能工作。

内核图像配置界面:make menuconfig

指定交叉编译工具链前缀:和上面说的修改Makefile指定效果一样

删除时同时按住ctrl再按back
内核的默认参数:

TCP/IP协议:

按空格会有三种选择模式:*表示这个驱动会直接编译进内核,M表示编译成ko单独的模块,空表示不编译。
网卡芯片驱动:

- 网卡移植,平台无关,网络协议支持

- 网卡移植,支持nfs文件系统,支持对应的网卡驱动

- 移植网卡需要的驱动
1.TCP/IP协议 2.nfs文件系统 3.对应的网卡驱动
设备树文件添加cpu与网卡的连接信息:

- RMII接口

- MDIO接口
类似与iic接口都是一根数据一根时钟线,需通过地址来访问挂载在总线上的PHY设备。

- 网络变压器

- 完整网络硬件图

文档参考:【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.1
- PHY是一个标准模块

- PHY芯片地址

I.MX6ULL 有两个网络接口,也就是两个 MAC 外设。
- 时钟可用MPU产生或者外接晶体

- linux内核网络对象




- ARP缓冲中的MAC和硬件MAC


- NAPI思想

- 本文作者: 龙兄嵌入式
- 本文链接: https://hexo.880755.xyz/1970/01/01/zblog/download/72.U-BOOT和内核的编译和nfs配置/
