i.MX6ULL
文章平均质量分 56
在正点原子ALPHA开发板上学习和整理驱动开发
lqonlylove
这个作者很懒,什么都没留下…
展开
-
i.MX6ULL裸机开发 六:按键中断实验
一、中断系统中断系统主要有以下几个关键点:1、中断向量表(通过地址偏移找到对应中断服务函数入口地址)2、中断控制器(STM32 使用 NVIC 中断控制器,iMX6ULL 使用 GIC 中断控制器)3、中断使能(全局中断使能和指定中断使能)4、中断服务函数注:要注意配置中断向量表起始地址(也就是链接起始地址,iMX6ULL 需要通过协处理器配置 VBAR 寄存器(向量表基地址寄存器)和 读取 CBAR 寄存器( GIC 基地址,此寄存器为只读寄存器))二、Cortex-A7 中断系统详细内原创 2022-01-10 00:05:29 · 1366 阅读 · 1 评论 -
i.MX6ULL裸机开发 五:按键输入
一、原理图分析通过原理图分析可以得到,当按键按下后 KEY0 为低电平,当按键释放后 KEY0 为高电平。通过原理图可以确定 KEY0 连接在 UART1_CTS 引脚上。二、时钟配置每个模块的时钟可以独立的关闭,下表详细说明了每个模块可能的时钟活动条件:00:在所有模式下时钟关闭。停止进入硬件握手被禁用。01:在运行模式下时钟是打开的,但在等待和停止模式下是关闭的10:保留11:除 STOP 模式外,所有模式下时钟都是打开的。GPIO1 时钟由 CCM_CCGR1[CG13] 控原创 2021-12-27 22:35:15 · 818 阅读 · 0 评论 -
i.MX6ULL裸机开发 四:BSP 工程管理
一、概述工程源码较多时,将工程源码都放在同一目录下,会使工程目录混乱不堪。因此,需要将不通功能的工程源码文件放在不同的目录中,同时也方便程序分功能管理。二、工程目录设计bsp:用于存放驱动文件。imx6ull:存放芯片相关文件。obj:存放编译生成的文件。user:存放 main.c 和 start.s。project:存放工程相关文件。顶层目录中存放 Makefile、imx6ul.lds。三、工程配置在 vscode 中进行开发,根据 vscode 相关规原创 2021-12-09 21:07:07 · 689 阅读 · 1 评论 -
i.MX6ULL裸机开发 三:imxdownload 源码分析
一、概述imxdownload 由正点原子提供,功能如下:1、添加启动头文件。2、向 SD 卡中烧写镜像。二、添加启动头文件(IVT、Boot Data、DCD)1、打开 bin 文件。2、计算 bin 文件大小。3、添加启动头。1、IVT注:IVT 一共 8 个字段。2、Boot Data注:Boot Data 一共 3 个字段。3、DCD从表中可以看出,DCD 里面的初始化配置主要包括三方面:1、设置 CCGR0~CCGR6 这 7 个外设时钟使能寄存器,默认原创 2021-12-09 20:56:27 · 1748 阅读 · 0 评论 -
i.MX6ULL系统移植:问题整理
一、linux 挂载 rootfs 后将执行哪些文件1、init 进程读取 inittab 文件,并调用执行相关文件(启动后执行 /etc/init.d/rcS)。2、rcS 执行 mount -a。3、mount -a 执行过程会使用 /etc/fstab 文件。inittab 内容如下(只包含常用内容,可以根据需求添加):#etc/inittab ::sysinit:/etc/init.d/rcS console::askfirst:-/bin/sh ::restart:/sbin/in原创 2021-12-08 17:02:46 · 388 阅读 · 0 评论 -
i.MX6ULL裸机开发 二:官方 SDK移植
一、I.MX6ULL 官方 SDK包下载二、I.MX6ULL 官方 SDK包简介NXP 针对 I.MX6ULL 编写了一个 SDK 包,这个 SDK 包就类似于 STM32 的 STD 库或者 HAL 库,这个 SDK 包提供了 Windows 和 Linux 两种版本,分别针对主机系统是 Windows 和 Linux。我们不是通过 SDK 进行开发,而是需要 SDK 中寄存器相关定义文件。一共需要如下三个文件:fsl_common.h:位置为 SDK_2.2_MCIM6ULL\devices原创 2021-12-07 20:56:56 · 2144 阅读 · 0 评论 -
i.MX6ULL裸机开发 一:LED
一、原理图分析从图中可以看出,LED0 接到了 GPIO_3 上,GPIO_3 就是 GPIO1_IO03,当 GPIO1_IO03 输出低电平(0)的时候发光二极管 LED0 就会导通点亮,当 GPIO1_IO03 输出高电平(1)的时候发 光二极管 LED0 不会导通,因此 LED0 也就不会点亮。二、时钟配置每个模块的时钟可以独立的关闭,下表详细说明了每个模块可能的时钟活动条件:00:在所有模式下时钟关闭。停止进入硬件握手被禁用。01:在运行模式下时钟是打开的,但在等待和停止模式下是原创 2021-12-06 22:02:02 · 1332 阅读 · 0 评论 -
i.MX6ULL系统移植:Linux移植8 - 根文件系统构建
一、说明在学习过程中,发现一些对根文件系统讲解清晰的博客或网页,在此记录方便查找。二、Linux系统目录结构https://blog.csdn.net/mzl87/article/details/79673012https://blog.csdn.net/u010835747/article/details/117852265三、rootfs的原理和介绍https://blog.csdn.net/LEON1741/article/details/78159754四、busybox 讲解htt原创 2021-11-25 23:37:34 · 248 阅读 · 0 评论 -
i.MX6ULL系统移植:Linux移植7 - nfs 方式挂载根文件系统
Linux 内核源码里面 Documentation/filesystems/nfs/ nfsroot.txt 讲解 nfs 挂载跟文件系统。一、nfs环境搭建1、安装nfs服务sudo apt-get install nfs-kernel-server2、nfs共享目录建立sudo mkdir /home/onlylove/linux/nfssudo chmod 777 /home/onlylove/linux/nfs3、配置 NFS 服务1、打开 etc/exports 文件sud原创 2021-11-23 00:45:30 · 893 阅读 · 0 评论 -
i.MX6ULL系统移植:Linux移植6 - Linux 内核移植
一、测试 NXP 官方linux1、解压 NXP 官方 Linux 内核tar -vxif linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz22、清除配置make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean3、配置工程make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_defconfig4、编译make ARCH=arm CROSS原创 2021-11-23 00:34:23 · 1859 阅读 · 0 评论 -
i.MX6ULL系统移植:Linux移植5 - Linux 内核启动流程概述
参考博客:https://blog.csdn.net/lushoumin/article/details/85274105https://blog.csdn.net/weixin_44895651/article/details/108739520https://blog.csdn.net/linuxweiyh/article/details/83382154https://blog.csdn.net/perfect1t/article/details/81741531https://blog.c原创 2021-11-16 00:58:12 · 762 阅读 · 0 评论 -
i.MX6ULL系统移植:Linux移植4 - make 编译分析
保留原创 2021-11-16 00:55:54 · 249 阅读 · 0 评论 -
i.MX6ULL系统移植:Linux移植3 - make xxx_defconfig分析
onlylove@ubuntu:~/linux/linux/alientek_linux$ make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_defconfig# 生成了 scripts/basic/fixdep 工具make -f ./scripts/Makefile.build obj=scripts/basic gcc -Wp,-MD,scripts/basic/.fixdep.d -Wall -Wmissing-prot原创 2021-11-16 00:54:02 · 909 阅读 · 0 评论 -
i.MX6ULL系统移植:Linux移植2 - Linux 内核顶层 Makefile 详解
一、版本号VERSION = 4PATCHLEVEL = 1SUBLEVEL = 15EXTRAVERSION =NAME = Series 4800二、MAKEFLAGS 变量# o Do not use make's built-in rules and variables# (this increases performance and avoids hard-to-debug behaviour);# o Look for make include files relativ原创 2021-11-16 00:51:59 · 399 阅读 · 0 评论 -
i.MX6ULL系统移植:Linux移植1 - Linux内核源码目录分析
保留原创 2021-11-16 00:45:08 · 1063 阅读 · 0 评论 -
i.MX6ULL系统移植:uboot移植9 - bootz 启动 Linux 内核过程概述
图片取自正点原子提供手册。原创 2021-11-08 21:13:13 · 335 阅读 · 0 评论 -
i.MX6ULL系统移植:uboot移植8 - uboot启动流程概述
一、uboot启动流程二、链接脚本分析u-boot 编译成功后才会在根目录下出现 u-boot.lds。通过 .lds 链接文件和 .map 文件找到执行的第一行程序。链接脚本如下:;定义文件输出格式:OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")OUTPUT_ARCH(arm) ;设置输出文件的体系架构ENTRY(_start) ;设置入口地址SECTIONS ;告诉链接器如何把输入文件的原创 2021-11-07 23:25:54 · 951 阅读 · 0 评论 -
i.MX6ULL GPIO
主要参照《iMX6ULL参考手册》中第 28 章:Chapter 28 General Purpose Input/Output (GPIO)。一、概述GPIO通用输入输出外设提供专用的通用引脚,可以配置为输入或输出。当配置为输出时,可以写入内部寄存器以控制输出引脚上驱动的状态。当配置为输入时,可以通过读取内部寄存器的状态来检测输入的状态。此外,GPIO外围设备可以产生CORE中断。GPIO是控制芯片IOMUX的模块之一。GPIO功能通过八个寄存器、一个边缘检测电路和中断产生逻辑提供。这八个寄原创 2021-11-03 00:23:16 · 1035 阅读 · 2 评论 -
i.MX6ULL IOMUX控制器
主要参照《iMX6ULL参考手册》中第 32 章:Chapter 32 IOMUX Controller (IOMUXC)。一、概述IOMUX控制器(IOMUXC)与IOMUX一起,使IC可以在一个pad上共享多个功能块。这种共享是通过复用pad的输入和输出信号来实现的。每个模块都需要一个特定的pad设置(如上拉或保持),每个pad最多有8个复用选项(称为ALT模式)。pad设置参数由IOMUXC控制。IOMUX仅由几个基本IOMUX单元组合而成的组合逻辑组成。每个基本IOMUX单元只处理一个pad原创 2021-11-02 23:11:51 · 1906 阅读 · 0 评论 -
i.MX6ULL 启动方式
主要参照《iMX6ULL参考手册》中第5章:Fusemap 和第8章:Chapter 8 System Boot(系统启动)。一、概述启动过程从开机复位开始,硬件复位逻辑单元芯片片上引导ROM开始执行。片上引导ROM代码使用内部寄存器BOOT_MODE[1:0]的状态以及各种 eFUSEs 和或 GPIO 设置的状态来确定设备的引导流行为。片上ROM的主要特点包括:支持从各种启动设备启动串行下载支持(USB OTG和UART)设备配置数据(DCD)和插件基于数字签名和加密的高保证引导(HA原创 2021-11-01 20:00:24 · 1637 阅读 · 0 评论 -
i.MX6ULL 主频和时钟
主要参照《iMX6ULL参考手册》中第10章:Clock and Power Management(时钟和电源管理)。第18章:Clock Controller Module (CCM)(时钟控制器模块)。一、电源和时钟管理框架Clock Generation:时钟脉冲振荡(时钟生成)Control and Status Logic:控制与状态逻辑Temperature Sensors:温度传感器Configuration and Status Registers:配置和状态寄存器Volta原创 2021-10-30 11:45:23 · 1417 阅读 · 2 评论 -
i.MX6ULL系统移植:uboot移植7 - make xxx_defconfig总结
一、常用配置命令当前 uboot 的配置已经完全变成 Linux 内核的配置形式了,完全可以按照 Linux 内核的分析方法分析 uboot。uboot 和 Linux 的代码配置项由 Kconfig 来完成的,关于 Kconfig 语法,可参见:linux/Documentation/kbuild/kconfig-language.txt在编译时,先进行配置,目的是根据需求选择功能以及编译生成方式类型(模式或包含在内核中)。配置项操作可以由如下命令中的其中一条来完成:make config:这转载 2021-10-24 23:37:16 · 986 阅读 · 0 评论 -
i.MX6ULL系统移植:uboot移植6 - make编译分析(二)
目前未完成原创 2021-07-25 19:41:36 · 112 阅读 · 0 评论 -
i.MX6ULL系统移植:uboot移植5 - make编译分析(一)
目前未完成原创 2021-07-25 19:40:55 · 106 阅读 · 0 评论 -
i.MX6ULL系统移植:uboot移植4 - make <board_name>_defconfig分析(二)
保留原创 2021-07-25 19:37:07 · 186 阅读 · 0 评论 -
i.MX6ULL系统移植:uboot移植3 - make <board_name>_defconfig分析(一)
以 make mx6ull_14x14_evk_defconfig 为示例,进行分析配置过程。1、顶层makefile的规则匹配执行 make mx6ull_14x14_evk_defconfig 命令时,顶层Makefile规格匹配目标如下:%config: scripts_basic outputmakefile FORCE $(Q)$(MAKE) $(build)=scripts/kconfig $@通过以上规则可以确定,%config 依赖 为 scripts_basic、outputm原创 2021-07-25 19:23:03 · 406 阅读 · 0 评论 -
i.MX6ULL系统移植:uboot移植2 - 移植NXP官方uboot
在移植过程中按照NXP官方文档《i.MX BSP Porting Guide》和正点原理提供资料均为移植成功,最后通过一个大佬博客讲解成功移植。以此记录。原博客地址:https://blog.csdn.net/BBDS1ASD/article/details/108692727一、解压NXP提供uboottar -vxjf uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2二、添加开发板配置文件在uboot/configs/中,把mx6ull_14x14_evk_转载 2021-07-20 23:44:02 · 597 阅读 · 0 评论 -
i.MX6ULL系统移植:uboot移植1 - 编译官方uboot
NXP官方uboot编译,主要参考《i.MX Porting Guide》文档。按文档中方法进行编译测试。一、下载NXP 官方ubootuboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2二、将uboot 拷贝到ubuntuonlylove@ubuntu:~/linux/uboot/nxp_uboot$ lsuboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2onlylove@ubuntu:~/linux/uboot/nxp_uboo原创 2021-07-17 23:56:39 · 1444 阅读 · 3 评论 -
i.MX6ULL系统移植:交叉编译器安装
一、安装流程1、在ubuntu中新建tools文件夹mkdir linuxcd linuxmkdir tool创建成功后,如下图所示:2、将交叉编译器拷贝到ubuntu中编译器使用正点原子提供的 gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz 交叉编译器。3、查看拷贝是否成功如图所示,交叉编译工具链已经成功拷贝到 ubuntu 中。4、在Ubuntu 中创建目录:/usr/local/armsudo mkdi原创 2021-07-17 23:17:39 · 411 阅读 · 0 评论 -
i.MX6ULL系统移植:介绍
一、硬件平台硬件平台使用正点原子ALPHA开发板。二、软件环境选项说明操作系统ubuntu 20.04交叉编译器gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihfssh工具XShellTFP工具Xftp串口助手XoboXterm源码阅读器Visual Studio Code三、资料1、正点原子提供http://www.openedv.com/docs/boards/arm-li原创 2021-07-17 22:32:00 · 541 阅读 · 0 评论