其中uboot类似于bios,负责对设备进行简单的初始化,devicetree以树的形式对zynq相连的硬件设备进行描述,kernel是加载的操作系统内核,ramdisk是操作系统启动之后挂载的文件系统。
移植操作系统后zynq的启动过程如下,首先加载bootrom(zynq中自带,用户无法修改),然后执行fsbl(这个根据硬件在sdk中创建),然后执行uboot,uboot会将kernel、devicetree和ramdisk载入ddr,跳转到内核入口处执行,这样linux就启动了。
通常uboot不需要升级,目前使用的版本为xilinx 2015年底发布的版本2015.4.不过针对不同的模块uboot需要进行修改,主要修改下面几个地方。
Uboot默认延迟7s再从QSPI flash中加载操作系统,如果设置为-1表明禁止自动加载
生成的1.dts可打开,里面能看到zynq端的外设信息和启用情况。通常需要修改网卡配置,如下,下例中phy地址为0
在文件系统中,如果需要添加用户自定义的shell脚本或可执行程序,可以放在/usr/bin目录下。如果要设置系统自启动项,可以在/etc/rc5.d中增加shell脚本。
目前linux内核中已经集成了常见的驱动,驱动源码位于drivers文件夹下。针对内核的修改位于 arch/arm/configs/xilinx_zynq_defconfig文件中,该文件中定义了内核所包含的驱动程序。
目前板子上都会用到I2C,首先需要知道I2C从设备的地址,如2/4/8这些.在devicetree中进行设置
ADC为ZYNQ用来监测电压或电流的通道,目前ZYNQ中集成了16个通道,首先需要在devicetree中设置启用的通道,图中启用的是0,1,8三个通道
NOR FLAHS驱动主要实现文件系统的挂载,这里不需要设置devicetree,只需要在内核中添加挂载文件系统的代码
上图中将NOR FALSH分为2个区,大小分别为32MB和64MB,需要注意的是NOR FLASH的起始地址和容量大小设置
当zynq接收来自外部的GPIO中断时,需要使用UIO机制及时响应中断,首先在devicetree中模拟出四个GPIO设备
打开APP阅读更多精彩内容点击阅读全文相关推荐:《嵌入式技术 基础课程》之逆向-X86汇编《嵌入式技术基础视频课程》之ARM汇编《嵌入式技术ARM裸机开发》之预备知识赞

