移植
将NXPuboot 拷贝
一个开发板运行uboot, DDR, 串口 ,SD卡, EMMC, NAND等需要存在, 板子可以工作, 一般情况下不会更改
直接移植, 测试结果, 可以正常启动, lcd初始化不对, 网咯初始化失败, DDR, emmc初始化正常, 串口正常
添加自己的驱动
添加默认配置文件
借鉴NXP官方板子
首先复制官方的configs文件夹下的配置文件, 找到对应的文件夹
添加的头部信息就是broad mx6ullevk文件夹下的imximage.cfg文件
添加对应的头文件信息
每一个板子都有唯一的头文件信息, 存放于include文件夹下的configs文件夹中
更改broad文件夹下的文件
更改arch/cpu/armv7/mx6文件夹下的Kconfig文件夹
解决驱动问题
lcd
修改的文件就是, mx6ull_jiao_emmc.h和mx6ull_jiao_emmc.c文件
由于使用的引脚相同, 不需要更改, 保存在c文件的lcd_pads数组中, 各种初始化正确, lcd参数struct display_info_t const displays[]
结构体的fb_videomode就是lcd的参数
具体参数
.bus =>lcd寄存器首地址
.pixfmt=> 像素格式
detect => 函数不需要
.enable => 函数, 进行初始化, 初始化时钟, 复位, 设置背光为高电平
.mode => 屏幕的参数, 根据屏幕的参数进行设置, 唯一不同的是.pixclock, 使用的是 (1/时钟频率)*10^12^ 显示一个像素使用的时间
头文件中的对应的屏幕的名字也要更改, panel环境变量中存储
网络
内部有个以太网MAC外设,也就是ENET,需要外接一个PHY芯片来实现网络通信功能, 没有内部MAC的CPU中,比如三星的2440,4412等,就会采用DM9000来实现联网功能。DM9000提供了一个类似SRAM的访问接口,主控CPU通过这个接口即可与DM9000进行通信,DM9000就是一个MAC+PHY芯片
6ULL采用内部的MAC加尾部的PHY, 官方使用的是KSZ8081, 正点原子使用的是LAN8720A芯片, 因此要修改驱动
8720有一个管理接口, 叫做MDIO和MDC, , 一个MDIO接口管理32个PHY芯片, 通过PHY ADDR来访问, ALPHA开发板ENET1使用的0x0, ENET2使用的是0x1, 通过有一个引脚进行设置上拉的时候为1
每一个都有一个复位引脚, 1和2分别使用SNVS TAMPER7和8两个复位引脚
驱动, 芯片的寄存器要进行配置, 前32个寄存器要求必须一样, 通用的, 理论上不需要修改, 在drivers/net/phy/phy.c
配置文件讲解
imx6ull_jiao_emmc.h
还可以进行超频, 在设备树imx6ull.dtsi文件, arch/arm/boot/dts, 在cpu0设备树中添加696000 1225000
对于低性能的板子可以用来超频
emmc
使能
一般使用八根线, 对应节点是usdhc2节点, 已经修改完成(复制官方的代码)
网络驱动
在做驱动调试的时候一般是通过网络进行的,
使能对应的驱动, 在图形化界面中
Device Drivers —>[*] Network device support —> -- PHY Device support and infrastructure —><> Drivers for SMSC PHYs
使用SMSC的驱动然后重新编译, 启动
根文件系统的构建
ROOTFS(根文件系统), 不等于FATFS, FATFS属于Linux你为内核第一部分, 属于软件代码, 根文件系统就是一堆的软件, 配置文件等, 是Linux运行必须的
内核只有6M, 其余的都是根文件系统,
根文件系统就是一个”文件夹”, 无法放到内核中, 比如命令, 库, 配置文件等等, 所有的软件就需要我们自己构建
busybox
构建根文件系统, 最基础的构建方法, 还有很多更成熟的根文件系统buildroot, yocto等, 提供常用的功能命令
构建的根文件系统通过网络挂载, 也就是存放在ubuntu, 开发板启动后使用nfs使用
使用
修改makefile, 添加交叉编译器, 添加架构ARCH和CROSS_COMPILE
修改为中文支持, 修改printable_string.c文件, unicode.c文件
有几种配置defconfig, 默认, allyesconfig全部配置, allnoconfig最小配置
打开图形化配置界面
编译指定编译的目录
库文件
使用交叉编译期的库文件, cp -d
拷贝符号链接
先是rootfs/lib 然后是rootfs/usr/lib
创建其他文件夹
MfgTool烧写工具
基本原理, 先下载一个Linux系统, 然后使用已经运行的系统完成系统烧写工作,
E:\mfgtools-with-rootfs\mfgtools\Profiles\Linux\OS Firmware文件夹下的firmware文件夹下的是zImage文件以及dtb文件uboot文件, files文件是文件的根文件系统, 以及对应的dtb