赞
踩
我买了韦东山的 IMX6ULL pro 开发板,本文记录学习笔记、遇到的问题和技术总结等,文章内容随学习进度持续更新。
正点原子也有 IMX6ULL 开发板,但韦东山除了LInux外还有 HarmonyOS 的教学资源。
韦东山的教学视频驱动部分是收费的,一千多,而且视频还没更新完,正点原子课程完全免费且已经比较完整。所以学习驱动时看正点原子的课,在韦东山的开发板上开发,两家因为芯片一样,所以代码都互通。
192.168.5.9 - 开发板IP
192.168.5.10 - 笔记本主机IP
192.168.5.11 - Ubuntu IP
1.挂载NFS,方便传输文件
2.配置交叉编译工具链,在~/.bashrc
中添加工具链绝对路径,执行source ~/.bashrc
使配置生效
我们需要把定制好的Linux系统移植到开发板上,Linux平台上有很多开源的Linux系统构建框架,他们的作用是编译出文件系统、uboot、系统镜像等,比如Buildroot、OpenWrt、yocto等,本文使用Buildroot进行编译。
同时编译bootloader 、rootfs、Uboot并生成整体的系统镜像
(1)选择要用的congfig文件make 100ask_imx6ull_pro_ddr512m_systemV_qt5_defconfig
(2)用图形界面对即将要编译的系统作配置make menuconfig
(3) make all
使用时钟控制模块(CCM),使能GPIO引脚,使得这个引脚可以操作。看原理图(下图),得知LED2所用引脚为GPIO5_3。
看芯片手册 《IMX6ULLRM.pdf》第18章(635页)
,如下图。得知要想使能GPIO5, 就需要操作寄存器CCGR1的CG15位
如下两张图所示,要使能时钟,只要将对应位设置成11就行,但CCGR1的CG15是reserve保留位,所以默认使能,不用设置就能用。
根据芯片手册,一个GPIO引脚也许可以用于不同的模式,比如GPIO、IIC、SPI等,要选择GPIO工作于哪种模式。
根据LED2的原理图,GPIO5_3
在芯片手册中海油另一个名字 SNVS_TAMPER3
.找到第32章IOMUX
,他的作用就是设置引脚的工作模式。
如下图,只要将该寄存器的 低4位设成 0x05 即可。
将GPIO引脚设置成input/output
找到芯片手册第28章,看GPIO的 memory Map, 可以看到GPIO5的方向寄存器和数据寄存器。写0表示设成 input,写1表示设成 output
根据LED原理图,写0则电路导通,LED亮
#include <linux/of.h> //如果不包含该头文件,会提示隐式声明函数的错误 /*读取指定的节点,参数path必须以根节点 "/" 开头。 *rg.参数为“/memory”,表示读取设备树根节点下的memory节点 */ struct device_node *of_find_node_by_path(const char *path); /*读取指定设备树节点的数组 * np:上一个函数读到的设备树节点 * propname:节点中的数组名称 * out_values:读到的数据保存在out_values 数组中 * sz:要读多少个数组元素*/ int of_property_read_u32_array(const struct device_node *np, const char *propname, u32 *out_values, size_t sz);
dmesg
。 警告: 隐式声明与内建函数‘printf’不兼容
芯片出厂时原厂都会提供自己自己的Linux源码包,IMX6ULL给出的是内核为Linux-4.9.88
的源码,客户 (比如正点原子、韦东山就是芯片原厂的客户) 在实际开发时基于这个源码包开发自己想要的功能,最终得到的就是SDK。
如下图,买到开发板以后商家在自己的SDK里也提供了芯片源码包供我们开发。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。