ZYNQ内核编译指南

编译环境

sudo apt-get install libncurses5-dev build-essential
内核下载:https://github.com/Xilinx/linux-xlnx/releases (xilinx-v2019.1)

下载交叉编译工具链linaro-gcc,并解压安装

https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/

我们这里下载后解压到/opt/cross_tool/目录。

设置交叉编译环境变量

export CROSS_COMPILE=/opt/cross_tool/bin/arm-xilinx-linux-gnueabi-
export ARCH=arm

内核配置和编译

make  xilinx_zynq_defconfig  #默认配置
make  menuconfig    #图形化配置
make  uImage LOADADDR=0x8000  #编译内核镜像uImage ,目标目录arch/arm/boot/uImage

devicetree的生成

在Linux源代码目录下, 编译目标为"dtbs"时会把所有的dts文件编译成dtb文件,所有的dts文件和生成的dtb文件都位于linux-xlnx/arch/arm/boot/dts/目录下

make ARCH=arm dtbs

生成的zynq-zed.dtb是我们需要的文件,改名为devicetree.dtb
如果只想生成zynq-zed.dtb,在linux源代码根目录输入以下命令即可make ARCH=arm zynq-zed.dtb

内核模块生成

make  modules
make  modules_install INSTALL_MOD_PATH=../rootfs

RAMDISK的配置

make menuconfig ARCH=arm
打开配置菜单,修改三个配置项,分别是:

a):General setup-->
		选择 Initial RAM filesystem and RAM disk...... 项
b):Device Drivers-->
		Block devices-->
				选择 RAM block device support 项
				配置(8192)Default RAM disk size(kbytes)默认大小
c) :FileSystem->
		选上<*> Second extended fs support

uboot环境变量传参,或者在内核中配置
bootargs="console=ttyPS0,115200 root=/dev/ram rw earlyprintk"

OLED、EMIO等的应用需要PL端的支持,并配置好设备树
MTD设备在linux中的支持需要在设备树中选中M25P80.

GPIO控制

查看是否存在/sys/class/gpio/,如果没有,需要在内核中配置

Device Drivers  —>  
       GPIO Support  —>     
            /sys/class/gpio/… (sysfs interface)

/sys/class/gpio 的使用说明:

01 * gpio_operation 通过/sys/文件接口操作IO端口 GPIO到文件系统的映射

02 * 控制GPIO的目录位于/sys/class/gpio

03 * /sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号

04 * /sys/class/gpio/unexport 用于通知系统取消导出

05 * /sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器的信息,包括每个寄存器控制引脚的起始编号base,寄存器名称,引脚总数 导出一个引脚的操作步骤

06 * 首先计算此引脚编号,引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数

07 * 向/sys/class/gpio/export写入此编号,比如12号引脚,在shell中可以通过以下命令实现,echo 12 > /sys/class/gpio/export

08 * 令成功后生成/sys/class/gpio/gpio12目录,如果没有出现相应的目录,说明此引脚不可导出:

09 * direction文件,定义输入输入方向,可以通过下面命令定义为输出

10 * echo out > /sys/class/gpio/gpio12/direction

11 * direction接受的参数:in, out, high, low。high/low同时设置方向为输出,并将value设置为相应的1/0。

12 * value文件是端口的数值,为1或0.

13 * echo 1 >/sys/class/gpio/gpio12/value

Digilent网络资源:
https://github.com/Digilent/linux-digilent
https://github.com/Digilent/u-boot-digilent
Xilinx网络资源:
https://github.com/Xilinx/u-boot-xlnx
https://github.com/Xilinx/linux-xlnx

展开阅读全文

页面更新:2024-06-20

标签:内核   寄存器   网络资源   源代码   端口   环境变量   命令   定义   方向   编号   目标   文件   目录   指南   数码   设备   系统

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top