Uboot和Linux内核移植笔记
文章平均质量分 94
此专栏用来收集uboot和Linux中移植的学习笔记
Donke_Dong
我生命中出现了美好的东西,是因为我做了曾经不敢做的事。。。
展开
-
嵌入式之buildroot的引入学习笔记
注:以下内容来自朱老师物联网大讲堂课件1. X210的bsp介绍1.1 嵌入式linux产品的bsp介绍(1)大部分的ARM架构的linux平台的bsp的内容和结构都是相似的。(2)bsp一般是芯片厂家/板卡厂家提供的。1.2 X210的linux+QT bsp整体介绍(1)tslib_x210_qtopia.tgz是用来支持QT的触摸屏操作的应用层库我们对qt_x210v3s_160307.tar.bz2进行解压,得到(2)xboot和uboot是X210支持的2个bootloader原创 2021-02-01 20:35:16 · 525 阅读 · 3 评论 -
嵌入式之根文件系统构建学习笔记
注:以下内容来自朱老师物联网大讲堂课件1. 根文件系统的构建路线1.1 先逐步构建文件夹形式根文件系统然后制作烧录镜像(1)rootfs有2种格式:nfs方式启动的文件夹形式的rootfs和用来烧录的镜像形式的rootfs。(2)传统的培训机构中上课时,rootfs制作实验都是直接给制作文档,学生参照制作文档的步骤自己动手做,一步到位做出来的就是可供烧录的rootfs。(3)我们先从空文件夹开始,逐步向其中添加一些rootfs中必备的东西,然后做一步就用nfs方式去挂载启动,观察启动后的现象,并且原创 2021-02-01 16:16:54 · 720 阅读 · 0 评论 -
嵌入式之根文件系统原理学习笔记
注:如下内容来自朱老师物联网大讲堂课件1. 根文件系统概述1.1 为什么需要根文件系统(1)init进程的应用程序在根文件系统上(2)根文件系统提供了根目录/(3)内核启动后的应用层配置(etc目录)在根文件系统上。几乎可以认为:发行版=内核+rootfs(4)shell命令程序在根文件系统上。譬如ls、cd等命令总结:一套linux体系,只有内核本身是不能工作的,必须要rootfs(上的etc目录下的配置文件、/bin /sbin等目录下的shell命令,还有/lib目录下的库文件等···原创 2021-01-27 17:06:19 · 443 阅读 · 0 评论 -
嵌入式之从三星官方内核开始移植学习笔记
注:以下内容来自朱老师物联网大讲堂课件1. 内核移植初体验1.1 三星官方移植版内核获取从网盘下载源码包,这个文件最初是来自于三星的SMDKV210开发板附带的光盘资料1.2 构建移植环境(1)删除多余的文件(主要是arch下的无关文件),Windows下建立SI工程(2)ubuntu下解压1.3 配置编译下载尝试(1)检查并更改Makefile中ARCH和CROSS_COMPILEARCH ?= armCROSS_COMPILE ?= /usr/local/a原创 2021-01-18 23:09:37 · 315 阅读 · 0 评论 -
嵌入式内核移植之内核的启动过程学习笔记
注:以下内容来自朱老师物联网大讲堂课件1. 做好内核分析的准备工作1.1 删除无用文件(1)官方版本的kernel中是支持各种硬件架构、各种开发板的,因此有很多文件夹和文件和我们无关,在建立SI工程前应该删掉这些家伙。(2)我们现在分析的是开发板厂商九鼎科技移植好的针对X210开发板的kernel,因此其中一些无用文件已经被删掉了。1.2 建立SI工程并解析我们在kernel的目录下创建SI_Proj文件夹用来存放SI生成的那部分文件然后添加kernel这个目录到我们的工程中进行同步1.3原创 2021-01-17 22:10:58 · 350 阅读 · 0 评论 -
嵌入式内核移植之内核配置学习笔记
注:如下内容来自朱老师物联网大讲堂课件1. linux内核源码目录结构1.1 源码从哪里来(1)之前讲过,我们使用2.6.35.7版本的内核。这个版本的内核有三种:第一种是kernel.org上的官方版本,第二种是三星移植过的,第三种是九鼎X210的移植版本。我们讲课时使用第三种内核来讲解,后面的移植实验使用第二种内核来移植。(2)源码在开发板光盘中有。可以自己去linux下解压然后make distclean清理然后再次打包传输到windows下去解压分析;也可以直接去我网盘中下载我打包好的。(原创 2021-01-13 21:39:27 · 458 阅读 · 0 评论 -
嵌入式内核移植之话说linux内核课件整理
注:如下的内容来自朱老师物联网大讲堂课件1. 内核和发行版的区别1.1 到底什么是操作系统(1)linux、windows、android、ucos就是操作系统(2)操作系统本质上是一个程序,由很多个源文件构成,需要编译连接成操作系统程序(vmlinz、zImage)(3)操作系统的主要作用就是管理计算机硬件,给应用程序提供一个运行环境。1.2 操作系统核心功能(1)内存管理。如果没有操作系统,内存是需要程序自己来管理的。譬如在uboot中要使用内存的哪里是自己随便用的,没有注册也没有限制。这原创 2021-01-08 21:34:41 · 143 阅读 · 0 评论 -
嵌入式之fastboot的初步学习笔记
注:如下内容参考朱老师物联网大讲堂课件1. 什么是fastboot(1)fastboot是android使用的一种刷机方法.android系统设计了2种刷机方式:fastboot和recovery。fastboot是一种线刷,就是使用USB数据线连接手机的一种刷机模式。相对于某些系统(如小米)卡刷来说,线刷更可靠,安全。recovery是一种卡刷,就是将刷机包放在sd卡上,然后在recovery中刷机的模式。(2)fastboot使用usb作为物理传输。刷机其实就是镜像传输+烧录,fastbo原创 2021-01-07 15:30:03 · 2051 阅读 · 1 评论 -
嵌入式uboot移植之从uboot官方移植
注:以下内容来自朱老师物联网大讲堂课件1. 选择合适的官方原版uboot1.1 官方原版uboot的版本(1)版本号。刚开始是1.3.4,后来变成2009.08(2)新版和旧版的差别。uboot的架构很早就定下来了,然后里面普遍公用的东西(common目录下、drivers目录下、fs目录下等···)在各个版本之间几乎是完全一样的。差别最大的是board和cpu目录,这两个目录正是单板(开发板)相关的。越新的uboot版本支持越多的开发板(CPU),所以越新的uboot越庞大。(3)并不是越新的版原创 2021-01-05 21:19:18 · 1439 阅读 · 1 评论 -
嵌入式uboot移植之三星官方uboot开始移植
注:以下内容来自朱老师物联网课件1. 移植前的准备工作1.1 获取三星移植过的uboot源代码我们使用的是老师提供的android_uboot_smdkv210.tar.bz2,文件存储在课件2.3.零距离初体验uboot部分1.2 SourceInsight准备(1)移植的时候最重要的工作就是看代码、改代码然后编译运行测试。(2)编译代码必须在linux中(windows共享文件夹中配置uboot不行的),那么看代码和改代码可以在linux中(vim、gedit)也可以在windows中(So原创 2020-12-20 23:29:57 · 566 阅读 · 0 评论 -
嵌入式之初步硬件驱动学习笔记
注:以下内容出自朱老师物联网大讲堂课件1.uboot与linux驱动1.1 uboot本身是裸机程序(1)裸机本来是没有驱动的概念的(狭义的驱动的概念就是操作系统中用来具体操控硬件的那部分代码叫驱动)(2)裸机程序中是直接操控硬件的,操作系统中必须通过驱动来操控硬件。这两个有什么区别?本质区别就是分层。1.2 uboot的虚拟地址对硬件操作的影响(1)操作系统(指的是linux)下MMU肯定是开启的,也就是说linux驱动中肯定都使用的是虚拟地址。而纯裸机程序中根本不会开MMU,全部使用的是物理原创 2020-12-16 21:17:05 · 512 阅读 · 0 评论 -
嵌入式之uboot环境变量学习笔记
注:以下内容来自朱老师物联网大讲堂课件1.uboot的环境变量基础1.1 环境变量的作用让我们可以不用修改uboot的源代码,而是通过修改环境变量来影响uboot运行时的一些数据和特性。譬如说通过修改bootdelay环境变量就可以更改系统开机自动启动时倒数的秒数。1.2 环境变量的优先级(1)uboot代码当中有一个值,环境变量中也有一个值。uboot程序实际运行时规则是:如果环境变量为空则使用代码中的值;如果环境变量不为空则优先使用环境变量对应的值。(2)譬如machid(机器码)。uboo原创 2020-12-15 20:09:04 · 715 阅读 · 0 评论 -
嵌入式之uboot的命令体系学习笔记
注:以下内容来自朱老师物联网大讲堂课件1.uboot命令体系基础1.1 使用uboot命令uboot启动后进入命令行环境下,在此输入命令按回车结束,uboot会收取这个命令然后解析,然后执行。1.2 uboot命令体系实现代码在哪里uboot命令体系的实现代码在uboot/common/cmd_xxx.c中。有若干个.c文件和命令体系有关。(还有command.c main.c也是和命令有关的)1.3 每个命令对应一个函数(1)每一个uboot的命令背后都对应一个函数。这就是uboot实现原创 2020-12-11 22:07:05 · 476 阅读 · 1 评论 -
嵌入式之uboot如何启动内核学习笔记
注:以下内容来自朱老师物联网大讲堂uboot课件1. uboot和内核到底是什么1.1 uboot是一个裸机程序(1)uboot的本质就是一个复杂点的裸机程序。和我们在ARM裸机全集中学习的每一个裸机程序并没有本质区别。(2)ARM裸机第十六部分写了个简单的shell,这东西其实就是个mini型的uboot。1.2 内核本身也是一个"裸机程序"(1)操作系统内核本身就是一个裸机程序,和uboot、和其他裸机程序并没有本质区别。(2)区别就是操作系统运行起来后在软件上分为内核层和应用层,分层后两原创 2020-12-09 16:53:52 · 1197 阅读 · 0 评论 -
嵌入式之uboot源码分析-启动第二阶段学习笔记(下篇)
接上部分---->嵌入式之uboot源码分析-启动第二阶段学习笔记(上篇)3.2.14 CFG_NO_FLASH(1)虽然NandFlash和NorFlash都是Flash,但是一般NandFlash会简称为Nand而不是Flash,一般讲Flash都是指的Norflash。这里2行代码是Norflash相关的。(2)flash_init执行的是开发板中对应的NorFlash的初始化、display_flash_config打印的也是NorFlash的配置信息(Flash: 8 MB就是这原创 2020-12-04 15:40:48 · 448 阅读 · 0 评论 -
嵌入式之uboot源码分析-启动第二阶段学习笔记(上篇)
注:以下内容来自朱老师物联网大讲堂在启动的第一阶段我们最后调用start_armboot,进入uboot的第二阶段,下面我们将来世第二阶段的分析。1. start_armboot函数简介1.1 一个很长的函数(1)这个函数在uboot/lib_arm/board.c的第444行开始到908行结束。(2)450行还不是全部,因为里面还调用了别的函数。(3)为什么这么长的函数,怎么不分成两三个函数?主要因为这个函数整个构成了uboot启动的第二阶段。1.2 一个函数组成uboot第二阶段1.3原创 2020-12-02 16:46:34 · 527 阅读 · 1 评论 -
嵌入式之uboot源码分析-启动第一阶段学习笔记
注: 以下的内容来自朱老师物联网大讲堂uboot部分课件1. start.S引入根据之前的学习经验我们知道,程序的运行肯定都要有一个入口,uboot的程序运行也是一样的,我们在裸机的部分知道了程序执行开始必须执行一段汇编代码进行相关的设定后(关看门狗、设置SVC栈、开/关icache、重定位等),才能调用C语言程序,所以这里我们要先找到汇编代码的入口。1.1 u-boot.lds中找到start.S入口(1)在C语言中整个项目的入口就是main函数(这是C语言规定的),所以譬如说一个有10000个原创 2020-10-21 22:45:23 · 1525 阅读 · 0 评论 -
嵌入式之uboot的配置和编译过程学习笔记
注: 以下内容来自朱老师物联网大讲堂uboot课件一、uboot的主Makefile分析1. uboot version确定VERSION = 1PATCHLEVEL = 3SUBLEVEL = 4EXTRAVERSION =U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)VERSION_FILE = $(obj)include/version_autogenerated.huboot的版本号分3个级原创 2020-10-18 17:58:09 · 661 阅读 · 0 评论 -
嵌入式之uboot初体验学习笔记
注:如下内容来自朱老师物联网大讲堂uboot课件1.什么是ubootU-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。U-Boot从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是根据相应的Linux内核源程序进行简化而形成的,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。更多信息参考见之前的博客嵌入式之U-B原创 2020-10-16 17:30:15 · 315 阅读 · 0 评论 -
嵌入式之Makefile学习笔记
注: 以下内容来自朱老师物联网大讲堂课件1. 为什么需要Makefile工程项目中c文件太多管理不方便,因此用Makefile来做项目管理,方便编译链接过程。在一个正式的软件项目中,由很多个.c和.h文件构成,此时如果直接在命令行编译,就会像这样:gcc a.c b.c c.c d.c e.c f.c g.c -o exe 每次编译都要输入一堆东西很麻烦,这个问题严重影响工作效率,所以我们就使用Makefile来进行管理makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make原创 2020-10-15 21:20:11 · 846 阅读 · 0 评论 -
嵌入式之shell练习
1. shell介绍在计算机科学中,Shell俗称壳(用来区别于核),是指"为使用者提供操作界面"的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。1.1 shell是操作系统的终端命令行(1)shell可以理解为软件系统提供给用户操作的命令行界面,可以说它是人机交互的一种方式。(2)我们可以使用shell和操作系统、uboot等软件系统进行交互。具体来说就是我们通过shell给软件系统输入命令然后回车执行,执行完成后又原创 2020-10-15 11:12:36 · 424 阅读 · 0 评论 -
嵌入式之U-Boot学习前传学习笔记
注: 如下内容来自朱老师物联网大讲堂uboot课件整理1. 为什么要有uboot(Universal Boot Loader)(1)uboot主要作用是用来启动操作系统内核。(2)uboot还要负责部署整个计算机系统。(3)uboot中还有操作Flash等板子上硬盘的驱动。(4)uboot还得提供一个命令行界面供人来操作。1.1 计算机系统的主要部件(1)计算机系统就是有CPU来做核心进行运行的系统。典型的计算机系统有:PC机(台式机+笔记本)、嵌入式设备(手机、平板电脑、游戏机)、单片机(家原创 2020-10-10 09:02:44 · 691 阅读 · 0 评论