365bet亚洲真人网址-365双试投注-365体育平台bet下载入口

嵌入式Linux内核移植两三事

嵌入式Linux内核移植两三事内核源码的来源有三种方式: Linux社区 芯片原厂(如恩智浦linux-imx) 板卡厂商(如韬睿toradex) Linux社区优势:更注

嵌入式Linux内核移植两三事

嵌入式Linux内核移植两三事内核源码的来源有三种方式:

Linux社区

芯片原厂(如恩智浦linux-imx)

板卡厂商(如韬睿toradex)

Linux社区优势:更注重通用性

劣势:没有对单个具体平台的优化

芯片原厂优势:在社区源码的基础上,针对某款芯片(如imx8qm)做了优化,适配了特定的BSP驱动,而这些驱动可能并还没来得及合入社区主线

劣势:易用性不足,文档不足

板卡厂商优势:注重用户体验,文档充足

劣势:封装更好意味着学习者对原理的理解会不足

内核移植的三个类型内核架构移植将Linux内核从一种架构(如x86)移植到另一种架构(如ARM等)

影响范围:通常需要调整内核体系结构相关的代码

通常由芯片原厂进行

内核体系结构都涉及哪些代码?BSP移植BSP是什么?BSP是board support package的缩写,也就是板级支持包,其主要作用是可以将硬件和Linux内核连接起来

也就是说:BSP提供了Linux内核可以在硬件上跑起来的所有环境,包括设备树,驱动等

BSP移植的内容将Linux内核移植到一个新的开发板或嵌入式设备上

影响范围:新硬件的驱动,设备树,引导加载程序等

通常由板卡厂商来进行

平台移植将Linux内核从一个特定硬件平台移植到另一个特定硬件平台

影响范围:设备树文件或配置,外设删减,引脚复用等

通常由终端客户进行

烧录嵌入式的板卡,一般除了运行内存RAM之外,还会有焊接在板子上的,称为eMMC的NAND闪存(就是通常意义上的磁盘)

运行内存的部分特殊区域,会直接映射到eMMC上,当然也会有其他设备的寄存器区域,详细信息需要查看板卡的Reference Manual,其中有一章Memory Map,讲述了内存的布局

板卡复位后,会从指定的地址(这个地址往往是板卡厂商预设好的)开始执行,也就是bootstrap阶段,这个在传统PC上就是执行BIOS代码的地方,这个阶段会初始化一些基本的硬件组件,比如时钟,DDR(内存),等,然后检测启动设备,比如从SD卡启动,从eMMC启动等

以eMMC为例,接着就是读取eMMC中的uboot,uboot负责加载内核镜像和设备树,接着交给内核执行,内核读取根文件系统,启动完成

通过上面的分析,bootstrap阶段的代码是芯片厂商内置在ROM中的,这个代码不需要我们插手,嵌入式工程师需要关注的有四个部分:

引导加载器uboot

内核image

设备树dtb

根文件系统ramdisk

其中引导加载器主要负责初始化硬件,然后加载内核,设备树,根文件系统,之后将执行流交给内核(注意,uboot只是加载设备树和根文件到内存中,具体对它们的解析是由内核完成的,uboot只是将其在内存中的地址传给内核)

内核也就是操作系统本身

设备树用来告诉内核,你有哪些硬件可以使用,硬件规格是什么

根文件系统则放置了一些基本的命令,你可以通过根文件系统里面的shell和内核进行交互(没有根文件系统的内核,没有交互可言)

发现了么?所谓的启动,至少要有三次,一次是BIOS代码,一次是uboot(服务器上可能是grub等),一次是内核。并且它们都要初始化硬件

比如BIOS至少要初始化时钟和DDR(没有DDR都没法去执行uboot了,所有的可执行代码都要放在内存上才能执行)

uboot要初始化比如时钟,串口UART,网卡ENET等硬件,然后加载内核

在内核中,也要初始化硬件,这次是内核要用到的所有硬件(硬件信息从设备树中获取)

其中内核初始化后的硬件功能最完整,最强大,前面两个阶段的硬件初始化只是为内核打地基(比如uboot不会初始化PCIE相关的硬件,因为uboot用不到)

那么,终于回到本章主题,所谓烧录就是指,将上面讨论的那四个组件,写入到嵌入式板卡的持久化存储设备中(常见是eMMC)

目标定下了,途径也可以是多种多样的,常见的有OTG烧录,网络烧录,SD卡烧录,JTAG烧录等

现在来考虑,一个裸机的嵌入式板卡,除了固件里面有一段BIOS代码之外,其余什么都没有,而焊接在板卡上的eMMC是块设备,使用它的前提是对块设备进行分区(通常使用fdisk, parted等),并对其分区格式化好某种文件系统(mkfs.vfat, mkfs.ext3等)

比如启动分区(内核镜像,设备树等内容所在的分区)一般是FAT32根文件系统的分区一般是ext3,ext4等顺便一提,fdisk只能格式化为DOS分区,也就是MBR主引导目录格式

parted可以格式化为GPT分区

请注意,格式化磁盘一般是操作系统才有的功能,而嵌入式板子上的eMMC是焊接在板子上的,你也不可能把它取下来,挂载在一个Linux/Windows/Mac上对其进行格式化,这就需要一些巧妙的方式,接下来我们一一道来。

OTG烧录所谓OTG就是USB On - The - Go(OTG)技术允许设备在没有主机(如计算机)的情况下,直接进行设备间的数据传输。在 OTG 烧录中,通常是将具备 OTG 功能的嵌入式设备与存储有镜像文件的 USB 存储设备(如 U 盘)直接连接,或者与另一台作为烧录主机的设备连接。嵌入式设备通过内置的 OTG 驱动程序识别 USB 存储设备,并从中读取镜像文件,然后按照预设的烧录流程将镜像写入自身的存储介质中。

OTG需要硬件支持,即:

开发板需要支持OTG开发板连接到主机主机有OTG驱动程序和相关依赖库

一般的操作是:连接开发板,直接将一份镜像(包括uboot,image,dtb,ramdisk)通过OTG放入嵌入式设备的内存中,然后启动这个跳转到这个image启动,这样开发板上就有了一个操作系统可用,就可以直接用这个操作系统格式化好eMMC,然后把要烧录进板子的镜像拷贝到eMMC上,就烧录好了,再次启动时,BIOS从eMMC启动,就可以启动拷贝进来的系统了

格式化eMMC一般会分两个分区,一个boot分区,一个文件系统分区,boot分区中存放内核,设备树,文件系统分区存放根文件系统

在eMMC 上,uboot所在的分区一般是写保护的,如果你想要写这个分区,需要先打开写保护(把只读关掉)

12# 这里的boot0就是eMMC特有的启动分区,eMMC的每一个硬件分区都是独立编址的echo 0 > /sys/block/mmcblkxxxboot0/force_ro

下面开始拷贝镜像,先是uboot,拷贝到eMMC的boot0分区里面

然后格式化boot分区,将其格式化为FAT32,挂载该分区,然后放入内核镜像和设备树,卸载该分区

最后格式化文件系统分区,将其格式化为ext3/4,挂载该分区,然后放入根文件系统,以及可能需要到的内核模块,卸载该分区

这时,开发板已经烧录好系统了

SD卡烧录首先准备一个SD卡,先将其fdisk进行分区,并将其格式化为FAT32,然后将一个格式化板卡eMMC的镜像(引导固件),和要烧写到板卡上的镜像(烧写在板卡上的操作系统),都拷贝到这个SD卡中

板卡设定为从SD卡启动,然后会首先去读取uboot,uboot去加载内核和设备树,挂载根文件系统,此时一个操作系统已经启动了,就可以用这个操作系统将要烧写的镜像拷贝到eMMC中了(和上面OTG步骤一样,先格式化eMMC,然后拷贝)

← 上一篇: 楚乔传洛河之死揭秘救了楚乔的竟是她!萧玉为什么囚禁夏虫
下一篇: 蟒蛇和毒蛇的捕食方式有何区别,为何蟒蛇没有进化出毒液? →

相关推荐

主板温度高的原因和处理办法

主板温度高的原因和处理办法

电脑运行时,主板温度过高可能会导致系统不稳定甚至硬件损坏。了解主板温度过高的原因并采取相应的处理办法至关重要。主板温度高的原因

丹芎瘢痕涂膜

丹芎瘢痕涂膜

网站简介 | 媒体报道 | 网络营销 | 产品中心 | 人才招聘 | 联系方式 | 手机浏览 互联网药品信息服务资格证书 编号:(粤)-经营性-2012-0002 根据国家

【新手攻略】武将列传-黄巾之乱刘备篇-选将攻略及注意事项

【新手攻略】武将列传-黄巾之乱刘备篇-选将攻略及注意事项

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 五郎Fred 于

关于怀的成语

关于怀的成语

© 2023 古诗文网| 看谱吧 | 吉他谱| 剧情介绍| 京ICP备18063074号-5 | 诗词地图 | 诗人地图 | 成语地图 | 字典地图 | 词典地图 | 诗句地图 免责声明:本

圣罗兰方管和圆管哪个更好?圣罗兰圆管和方管有什么区别?

圣罗兰方管和圆管哪个更好?圣罗兰圆管和方管有什么区别?

ysl圣罗兰旗下的圆管与方管的唇膏是非常受人们欢迎,而许多人在选择唇膏的时候都常常会陷入纠结中,不知道该选择圣罗兰方管的唇膏好还是

没有找到站点

没有找到站点

您的请求在Web服务器中没有找到对应的站点! 可能原因: 您没有将此域名或IP绑定到对应站点! 配置文件未生效! 如何解决: 检查是否已经绑定