1.鸿蒙系统体验之在IMX6ULL上体验鸿蒙系统
2.èªå¦åµå
¥å¼å¼ååºè¯¥å
è¦å¦äºä»ä¹?源码
3.飞凌嵌入式i.MX 8M Plus开发板的OTA远程升级方案
4.总结uboot的重要概念,不知道的读写看过来
5.超详细Uboot驱动开发(二)uboot启动流程分析
鸿蒙系统体验之在IMX6ULL上体验鸿蒙系统
请先下载以下文件,里面含有烧写软件:
鸿蒙内核Liteos-a的源码官方代码目前只支持海思的芯片,我作为首批开发者入驻华为一个多月,读写成功在ASK_IMX6ULL上移植了Liteos-a。源码
本文先让大家体验一下Liteos-a,读写流量审计源码后续会发布教程、源码视频、读写源码。源码
百问网开发了一款烧写软件:ask_imx6ull_flashing_tool,读写它的源码界面如下:
使用这软件,只需要一条USB线连接电脑和开发板USB OTG口,读写只需要点击一个按钮就可以体验鸿蒙系统。源码
1.1 熟悉ASK_IMX6ULL启动开关1.1.1 全功能版
ask_imx6ull全功能版支持USB、读写EMMC、源码SD/TF卡三种启动方式。使用后2种启动方式之前,需要先在EMMC或SD/TF卡上烧写系统。
板子背后画有一个表格,表示这3种方式如何设置。表格如下:
BOOT CFG
这3种启动方式的设置示意图如下:
其中的USB启动模式主要用来烧写系统。 注意:设置为USB启动时,不能先插上SD/TF卡。spark源码编译windows
1.1.2 MINI EMMC版
百问网 IMX6ULL EMMC版支持USB、EMMC、SD/TF卡三种启动方式。使用后2种启动方式之前,需要先在EMMC或SD/TF卡上烧写系统。 板子背后画有一个表格,表示这3种方式如何设置。表格如下:
这3种启动方式的设置示意图如下:
其中的USB启动模式主要用来烧写系统。 注意:设置为USB启动时,不能先插上SD/TF卡。
1.2 安装驱动程序
下载“ask_imx6ull烧写工具v4.zip” 后,把它解压可得如下目录:
运行上图中的程序。
1.2.2 连接USB OTG线
先把开发板设置为USB启动方式,接好2条USB线,开发板上电。
(1) 全功能版接线方式
(2) MINI EMMC版接线方式
1.2.3 安装IMX6ULL的USB驱动程序
通过USB下载或是烧写程序时,需要把开发板的OTG口用USB线连接到电脑。一般都会自动安装驱动,烧写软件的绿灯不亮时,则很有可能是驱动程序没有安装好,这时需要手工安装驱动程序。
要选择“连接到主机”,淘客源码程序勾选“记住我的选择,以后不再询问”。也许你不慎点错了“连接到虚拟机”,那也没关系,在VMWARE的菜单中把“Freescale SE Blank 6ULL”或“Netchip USB download gadget”断开连接,如下图所示:
安装第2个驱动:当烧写工具的“设备已连接”绿灯亮起,就可以在“专业版”点击“运行”按钮,这时电脑会识别出“USB download gadget”设备,一般都会自动给它安装驱动程序,如下图:
如果没有自动安装好驱动程序(“固件已运行”绿灯没亮),先去
下载zadig并运行,然后参考下图安装驱动程序:
如果一切正常,烧写工具的2个绿灯都会亮,如下:
这就表示所有驱动都安装好了,可以重启开发板,就可以参考后面章节体验鸿蒙了。
1.3 鸿蒙文件在哪
在“ask_imx6ull烧写工具v4”目录下,
1.4 一键体验鸿蒙:下载到内存运行1.4.1 一键启动
把开发板设置为USB启动,接好2条USB线,装好驱动程序后,运行烧写工具,点击下图所示按钮,2019打码 源码观察串口信息,可以看到板子启动进入鸿蒙系统了:
串口信息如下:
1.4.2 执行shell命令
执行help命令,可以看到支持的SHELL命令,如下:
1.4.3 执行数码相框GUI程序
注意:必须用“./bin/digitpic”,不能用绝对路径“/bin/digitpic” 注意:这个GUI程序是我们自己写得,很丑,与鸿蒙无关。
在板子屏幕上可以看到:
1.4.4 退出程序
执行task命令确定进程号,然后执行“kill -9 PID”杀掉进程,比如:
1.5 开机自动启动鸿蒙
把开发板设置为USB启动,接好2条USB线,装好驱动程序后,运行烧写工具.
先烧写,点击下图所示按钮:
然后设置默认系统,如下图所示:
最后,设置为EMMC启动,重新上电后就可以自动进入鸿蒙系统。
èªå¦åµå ¥å¼å¼ååºè¯¥å è¦å¦äºä»ä¹?
åµå ¥å¼å¼åçå¦ä¹ å ¶å®å¹¶æ²¡æé£ä¹é¾ï¼åªè¦äºè§£å¦ä¹ çä½ç³»ï¼ææ¡æ£ç¡®çå¦ä¹ æ¹æ³ï¼å¦ä¹ èµ·æ¥å¹¶ä¸é¾ãæ¥è®²ä¸ä¸åµå ¥å¼å¼åé½è¦å¦äºå¥ï¼åµå ¥å¼å¼åç主è¦å¦ä¹ å 容ï¼
Cï¼Javaæ ¸å¿ç¼ç¨ï¼cè¯è¨æ ¸å¿ç¼ç¨ï¼Javaæ ¸å¿ç¼ç¨ï¼
Linuxæ ¸å¿æä½ä¸ç®æ³ï¼Linuxç³»ç»ä½¿ç¨ï¼Linux-cç¼ç¨æ ¸å¿ææ¯ï¼ç²¾åæ°æ®ç»æï¼Linux-cç¼ç¨ç²¾é«ï¼
æ ¸å¿æä½ä¸ç®æ³ï¼Linuxç³»ç»ç¼ç¨ï¼Linuxç½ç»ç¼ç¨æ ¸å¿ææ¯ï¼UIç¼ç¨ï¼Javaæ ¸å¿ç¼ç¨ï¼å®åæ ¸å¿ææ¯ï¼
ARM+Linuxåºå±å¼åï¼æ°åçµè·¯ï¼ARMç¼ç¨æ ¸å¿ï¼Linuxç³»ç»å¼åï¼åµå ¥å¼Linux驱å¨å¼åï¼
大å项ç®å®è·µï¼æ¯æå®æåç±»åçå®ç项ç®
äºèç½è¡ä¸ç®åè¿æ¯æçé¨çè¡ä¸ï¼å¦ä¹ ITæè½ä¹å足å¤ä¼ç§æ¯ææºä¼è¿å ¥è ¾è®¯ãé¿éãç½æçäºèç½å¤§åé«èªå°±ä¸çï¼åå±åæ¯é常好ï¼æ®é人ä¹å¯ä»¥å¦ä¹ ã
æ³è¦ç³»ç»å¦ä¹ ï¼ä½ å¯ä»¥èå¯å¯¹æ¯ä¸ä¸å¼è®¾æITä¸ä¸ççé¨å¦æ ¡ï¼å¥½çå¦æ ¡æ¥ææ ¹æ®å½ä¸ä¼ä¸éæ±èªä¸»ç å课ç¨çè½åï¼å»ºè®®å®å°èå¯å¯¹æ¯ä¸ä¸ã
ç¥ä½ å¦æææï¼æé纳ã
请ç¹å»è¾å ¥å¾çæè¿°
飞凌嵌入式i.MX 8M Plus开发板的OTA远程升级方案
传统Linux系统更换镜像的手段相对单一,但RAUC工具为Linux引入了Android式的OTA升级功能。本文以飞凌嵌入式i.MX 8M Plus的OKMX8MP-C开发板为实例,展示如何基于Linux 5.4.内核通过RAUC实现系统更新。 升级前,展示图片源码系统启动时会读取boot.0和rootfs.0分区。切换至OTA模式,uboot引导系统将从boot.1和rootfs.1启动。实现Linux-OTA的关键步骤如下:环境准备
下载Ubuntu .虚拟机镜像,链接地址:mirrors.tuna.tsinghua.edu.cn...
升级虚拟机GCC至7.0版本:修改apt源,安装GCC-7和G++-7,然后将原有GCC和G++备份并指向新版本。
安装RAUC工具:通过apt进行安装。
源码配置与环境配置
-
配置eMMC分区:修改Init.sh脚本。
解压RAUC及相关依赖工具:包括liblz4、fw_setenv、unsquashfs和yocto-rauc-1.5.1。
修改配置文件:fw_env.config、system.conf,以及编译脚本和挂载配置文件,确保兼容性和分区正确。
生成升级包
-
全编译镜像,获取所需文件。
复制镜像和密钥文件,创建并编辑manifest.raucm配置文件。
编写打包脚本run.do_bundle.sh,生成bundle.raucb升级包。
系统升级与管理
-
将升级包传到开发板,检查系统状态并进行升级。
升级后确认uboot引导分区,切换至新系统,然后同步并重启。
如果需要回退,重新配置uboot引导分区。
通过以上步骤,飞凌嵌入式OKMX8MP-C开发板成功实现了RAUC支持的OTA升级,升级过程涉及的分区管理和RAUC工具的使用是关键。希望这个教程能为开发者提供实践指导。总结uboot的重要概念,不知道的看过来
本篇内容不讲解uboot源码,只总结面试中高频问到的重要知识点。内容适用于嵌入式新人了解uboot,对老手有复习和查漏补缺的作用。
1、PC机启动:上电后,BIOS程序初始化DDR内存和硬盘,从硬盘读取OS镜像到DDR,跳转执行OS。
2、嵌入式Linux系统启动:上电后执行uboot,初始化DDR、Flash,将OS从Flash读到DDR,启动OS。
3、uboot定义与作用:uboot属于bootloader,作为单线程裸机程序,主要作用是初始化硬件、内存、flash等,引导内核启动。
4、uboot启动阶段(不同平台差异):MTK平台:boot rom -> preloader -> lk -> kernel;RK平台:bootrom -> spl(miniloader) -> uboot -> trust -> kernel;NXP平台:bootrom -> bl2 -> ATF -> uboot -> kernel。
5、uboot支持多种启动方式:SPI Flash/eMMC/Nvme/SD/Hard Disk/U-Disk/net。启动方式不同,固件存放位置也不同。
6、掌握uboot的关键点:命令和环境变量。uboot启动后大部分工作在shell中完成,命令用于操作,环境变量如bootcmd和bootargs,用于设置启动参数。
7、bootargs参数详解:root用于指定rootfs位置,console用于设置控制台,mem用于指定内核使用内存大小,ramdisk_size用于设置ramdisk大小,initrd用于指定initrd参数,init用于指定启动脚本,mtdparts用于设置分区。
8、常用bootargs组合:文件系统为ramdisk、jffs2类型、nfs等不同情况下的bootargs设置示例。
总结,了解uboot是嵌入式开发的基础,掌握其启动过程和关键参数,对提高开发效率和解决问题有重要作用。
超详细Uboot驱动开发(二)uboot启动流程分析
本文将深入解析Uboot(BL2阶段)的启动流程,BL1阶段的详细流程会在后续文章中分享。首先,我们来看Uboot的执行流程,以EMMC作为启动介质为例。 Uboot启动流程大致如下:首先打开u-boot.lds文件,它是Uboot工程的关键链接脚本,指定入口地址ENTRY(_start)。通过查找u-boot.lds文件(通常在源码目录下),可以理解程序的组装过程。 进入程序执行,board_init_f()函数在common/board_f.c中,负责调用init_sequence_f进行初始化,包括串口、定时器、设备树和DM驱动模型等,还包括global_data结构体初始化。其中,reloc_xxx函数实现重定向功能,将Uboot镜像移到高端内存以避免内存冲突。 重定向的必要性和过程包括:当内存不足时,Uboot会将自身镜像移动到DDR的其他位置。具体步骤包括在arch/arm/lib/crt0.S文件内的处理。setup_reloc函数帮助我们跟踪重定向后的地址,便于调试。 后续,board_init_r负责后置初始化,如外设信息的初始化。最后,执行run_main_loop和main_loop函数,main_loop是Uboot的核心,处理kernel加载、命令行交互和预定义命令等任务。 在main_loop中,bootdelay_process负责启动倒计时,cli_loop则负责命令行交互。通过理解这些关键步骤,我们对Uboot的启动流程有了全面认识。深入了解部分则可根据个人兴趣逐步探索。 如果有疑问或需要进一步讨论,欢迎在评论区交流。参考文章链接如下:[0]:优化阅读体验
[1]:board_init_f的详细介绍
[2]:启动流程参考
[3]:main_loop的相关内容