IMX6ULL——启动流程(与stm32对比)
一、IMX6ULL——启动流程
飞向深空关注
2021.02.08 10:26:55字数 1,387阅读 1,754
1.IMX6拿C来编程需要C运行环境,这个运行环境由arm汇编来实现,文件夹的start.s文件就是启动文件,来实现C运行环境。其实STM32也有这个.s文件,拿H7举例,startup_stm32h753xx.s,这个文件是MDK自动生成的,不需要自己编写。
2.IMX6编程到运行需要把所有.c文件变成.o可执行文件,然后把所有.o文件链接在运行地址0x87800000转变成一个.bin文件,但是仅仅是.bin文件并不能在IMX中跑,需要在.bin文件头部加上数据头变成.imx文件传入IMX才能运行。
3.上述操作,可以编写make文件来实现,make文件可以实现通用,避免每增加一个文件就需要更改上述的命令。其实make文件也是实现了上述步骤,但最终是实现.bin文件。其实STM32也背地里帮你实现了make文件的功能,MDK帮你把.c文件变为.o然后变为.bin最后变为.hex文件即stm32要的执行文件,等价于IMX6的.imx文件
4.生成了.imx文件,但是如何让imx6获取到代码并执行? 这就涉及到了启动方式。IMX6的启动方式由26个IO所决定,其中有boot0,boot1和其余24个IO。boot1 - boot00 0 从FUSE启动 , 不用0 1 串行下载 , 用到但是代码定型使用到1 0 内部boot模式,用到,常用
串行下载:串行下载的意思就是可以通过 USB 或者 UART 将代码下载到板子上的外置存储设备中这个下载是需要用到 NXP 提供的一个软件,一般用来最终量产的时候将代码烧写到外置存储设备中的。
内部boot模式:在此模式下,芯片会执行内部的 boot ROM 代码,这段 boot ROM 代码会进行硬件初始化(一部分外设),然后从 boot 设 备(就是存放代码的设备、比如 SD/EMMC、NAND)中将代码拷贝出来复制到指定的 RAM 中,一般是 DDR。上面这句话看起来有点难懂,其实就是选了这个模式就先执行内部boot rom程序初始化硬件,然后根据boot0/1的选择和24个IO的选择的启动方式把从什么地方取到.imx文件。可以根据启动方式的配置,配置为从①、接到 EIM 接口的 CS0 上的 16 位 NOR Flash。②、接到 EIM 接口的 CS0 上的 OneNAND Flash。③、接到 GPMI 接口上的 MLC/SLC NAND Flash,NAND Flash 页大小支持 2KByte、4KByte和 8KByte,8 位宽。④、Quad SPI Flash。⑤、接到 USDHC 接口上的 SD/MMC/eSD/SDXC/eMMC 等设备。⑥、SPI 接口的 EEPROM。从这几个地方取.imx文件,其实就是在这几个地方启动,我现在看到的章节,原子说它用5,从SD卡启动。Boot ROM还会初始化IMX的时钟式,主频396Mhz。其实.imx文件下载到SD卡并不算完,代码最终要被放在跟IMX6u连接的DDR3(SDRAM)中,因为imx6没有内部SRAM使用,所以代码最后放到SDRAM运行了,Boot ROM 中有初始化DDR3的代码。
boot0,boot1如上,其余的24个IO,在正点原子板子上用于了LCD , 其实这24个IO用啥都没关系,它只在启动时候用于启动方式选择,后面自动变成普通IO。这个24个IO全部下拉, 实际只用其实6个。具体是哪几个我目前不去管它,只需要知道这板子上8个管脚作用。设置 启动设备0 1 x x x x x x 串行下载,可以通过 USB 烧写镜像文件。1 0 0 0 0 0 1 0 SD 卡启动。1 0 1 0 0 1 1 0 EMMC 启动。1 0 0 0 1 0 0 1 NAND FLASH 启动。
目前选SD卡启动方式
5..bin文件转化成.imx文件。也需要几个步骤,但正点原子提供了一个软件imxdownload来实现了着几个步骤,只需要把这个软件放在.bin文件同级目录下就行了,但此时观察软件名字发现是灰色,需要使用chmod 777 imxdownload来给这个软件可执行权限,发现名字变成绿色可以执行。软件是可以执行了,但如何来使用?上面说到启动设备选择SD卡,于是就用这个软件把.bin文件变成.imx文件传入到SD卡。目前软件有了,启动方式决定了,还插SD卡,拿读卡器装上SD卡,插到电脑上,选择接入到Ubuntu , 执行命令 ls /dev/sd* 看看有没有新增的sd* ,不能决定就插拔SD卡看谁在变化,找不到SD卡重启ubuntu。有SD卡文件化的文件后,执行命令 ./imxdownload led.bin /dev/sdf 就可以把.imx文件传到SD卡。注意拿空SD卡,因为会先格式化清空SD卡。
0人点赞
日记本
iMX6ULL开发板源码编译烧录
HD-IMX6ULL-MB 系列开发板是武汉芯路遥科技有限公司与武汉万象奥科电子有限公司合作推出的一款开发板。此开发板基于 NXP iMX6ULL 系列 Cortex-A7 高性能处理器设计,适用于快速开发一系列具有创新性的产品如人机界面工业 4.0 扫描仪、车载终端以及便携式医疗设备。
HD-IMX6ULL-MB 系列开发板
1.eMMC系统镜像烧录
1.1.硬件跳线设置
iMX6ULL支持eMMC、Nandflash、TF卡(SD卡)等多种启动方式,HD-IMX6ULL-MB 开发板上板载了一颗Samsung公司的8GB eMMC芯片,此外它还带有一个TF卡槽,这样该开发板支持eMMC和SD卡两种启动方式。由下图可知,系统具体采用哪种方式启动由J3跳线帽子决定。
eMMC系统镜像烧录
将J3的跳线帽子全部断开,则进入eMMC启动模式,该模式下开发板上电后将从eMMC读取运行u-boot,进而加载并启动Linux系统。
1.2. 硬件连接
如下图所示,连接相关的硬件接口设置:
使用 9V/1A 电源 (7~28V电压范围)供电;使用 TypeC USB 线 连接开发板和PC,Win10系统自带有其驱动,该接口专门用来烧录 u-boot 或系统镜像 ;
使用 USB 串口调试线 连接开发板和PC,该模块使用CH340 USB转串口芯片,需要安装其驱动。eMMC系统镜像烧录
1.3. 软件准备
在硬件设备准备好之后,我们还需要安装或准备好如下软件:
点击此链接下载 并安装好 USB 转串口调试器 驱动 ;点击此链接下载 NXP官方烧录程序 uuu.exe ,也可以从前面的项目源码路径imx6ull/bsp/images/wintools/ 中获取 ;
点击此链接下载 凌云实验室的 i.MX6ULL开发板烧录批处理脚本 win_flash.bat ,也可以从前面的项目源码路径 imx6ull/bsp/images/wintools/ 中获取 。
串口驱动下载安装好后,将 USB 转串口调试器 接入 使用 Win+R 快捷键打开 运行 , 然后输入
devmgmt.msc 命令打开 设备管理器 , 接下来我们应该可以看到相应的串口设备文件。如下图所示:
eMMC系统镜像烧录
接下来使用 SecureCRT 或其他串口调试软件,打开相应的USB转串口设备,并监听串口:
eMMC系统镜像烧录
1.4. 烧录文件
如前面 系统源码编译 相关章节所述,将前面源码编译输出的相关文件 拷贝/下载 到Windows系统下, 并将系统镜像解压缩出来。
eMMC系统镜像烧录
当前imx6ull项目支持 Buildroot、Yocto、Debian(Stretch、Buster、Bullseye) 等不同的文件系统,编译的时候使用的文件系统不一样,生成的系统镜像也不一样。如果系统镜像不一样,可以修改
win_flash.bat 批处理脚本中的 IMAGE_SYS 变量值:
eMMC系统镜像烧录
1.5. 烧录模式
要想重新烧录开发板,则需要让开发板首先进入到烧录模式,然后通过 USB TypeC接口烧录。不同情况下进入烧录模式不一样:
硬件开发板刚生产出来时,并没有系统软件,这时将会默认进入到烧录模式;如果开发板已经烧录了万象奥科的出厂系统,则需要使用 mmc dev 1 1 && mmc erase 0 40000 命令先擦除 u-boot 后再重启进入到烧录模式;如果开发板已经烧录了凌云实验室的系统,则可以使用 fastboot 0 命令进入到烧录模式;eMMC系统镜像烧录
1.6. 系统烧录
上述准备工作都准备好之后,直接双击运行win_flash.bat 批处理脚本将会进入系统烧录。接下来会出现一个选项:
如果想只烧录/更新 u-boot 程序,则选择输入 1 ;如果想烧录/更新 整个系统镜像 , 则选择输入 2 ;eMMC系统镜像烧录
烧录成功之后,批处理将会自动退出,调试串口上也将会提示相关信息。此后可以给开发板重新上电, 设备将正常启动。
1.7. 系统启动
系统重新上电后,串口调试终端上将会输出U-boot的启动信息。3秒内按任意键将会进入到 U-boot 调试模式,否则将会自动启动系统。
eMMC系统镜像烧录
Linux系统启动后,我们可以使用用户名 root ,默认密码 12345 登录系统。
eMMC系统镜像烧录
版权声明
本文档所有内容文字资料由凌云实验室郭工编著,主要用于凌云嵌入式Linux教学内部使用,版权归属 作者个人所有。任何媒体、网站、或个人未经本人协议授权不得转载、链接、转帖或以其他方式复制发布/发表。已经授权的媒体、网站,在下载使用时必须注明来源,违者本人将依法追究责任。
Copyright (C)2021 凌云物网智科实验室·郭工
Author: GuoWenxue guowenxue@gmail.com
相关问答
imx6 肿么更新 文件系统 压缩包-ZOL问答由于项目需要,把玩了半年的DSP(c陆漆四吧),扔到了一边,玩起了IMX陆Q。本人使用的开发板是imx陆q_sarbe_sd(MCIMX陆Q-SDB),以下记录如何通过u-boot设置SD,NFS启...
三星Exynos1080测评跑分参数详细介绍-ZOL问答骁龙765G对5G网络也有很好的支持骁龙765g相当于麒麟810,相当于天玑800处理器,性能在中端机中来说还是非常不错的,安兔兔跑分能达到32万骁龙765G采用的是三星7nm...
x-land和imax区别?外...由于画面分辨率提高,观众可以更靠近银幕,一般所有座位均在一个银幕的高度内(传统影院座位跨度可达到8~12个银幕),此外,座位倾斜度亦较大(在半球形银幕的...
喜欢全面一点的手机iQOO PRO这款手机怎么样?IQOOPRO绝对算是今年性价比很高的手机之一iQOO是vivo旗下的全新子品牌,iQOO品牌的命名源自“IQuestOnandOn”,寓意着“追求不止、进击不止”的品牌内涵。...
OPPO Find X3算不算高端旗舰手机?它配备了主摄级的IMX766大底传感器,以及抗畸变能力极强的自由曲面镜片。如果你需要经常拍摄风景大片,OPPOFindX3就是你的不二选择。综合来说,这款手机是OPPO有...
vivoxpaly6与三星s7相比,哪个摄像功能要更胜一筹?vivoXplay6vivoXplay6采用5.5英寸2K分辨率YOUM柔性面板,配备骁龙820处理器、6GBLPDDR4内存和128GBUFS2.0闪存。后置1200万像素(IMX362)+...
iqoo11s和iqoo11pro哪个贵-ZOL问答但是iqoo11s采用索尼IMX866传感器,1/1.49大底,而iqoo11采用三星GN5传感器,1/1....于2019年3月6日正式开售,属于旗舰系列,iQOO旗下有iQOO旗舰,iQOON...
怎么评价魅族17这款手机?【【【前言:5G时代难得的“匠心之作”】】】众所周知,自5G网络从去年秋季在国内正式商用以来,对许多手机厂商而言,就几乎意味着一场“造机风暴”的来临。从...
iQOO11s为何比11便宜-ZOL问答其次,在屏幕方面,iQOO11s采用了三星E6直屏,而iQOO11则采用了华星光电C6发光二极管屏幕。虽然两者在显示效果上都很好,但是三星E6直屏在显示效果上要更出色一...
如何评价vivo NEX?我们拿到了机器,初步上手了一下,实际体验见下文。正面全是屏,背部五彩斑斓的黑若说vivoNEX正让人震撼的点,莫过于正面那几乎一整块的屏幕,没有刘海,没...vi...