
系统移植
文章平均质量分 95
lanhuazui10
这个作者很懒,什么都没留下…
展开
-
linux文件系统初始化过程
从图中可以看出将文件分为符号链接和非符号链接两种情况处理,这是因为符号链接文件是一种特殊的文件,只有第一个符号链接文件的inode存储的是真实数据,而其他符号链接文件inode中存储的是第一个符号链接文件的路径名,因此需要把第一个符号链接文件的路径名缓存起来,缓存的数据结构是hash表,所以在处理符号链接文件时多了一些hash表的操作,因此分为了符号链接文件和非符号链接文件这两种情况来处理。另外,rootfs为VFS提供了'/'根目录,所以文件操作和文件系统的挂载操作都可以在VFS上进行了。转载 2024-11-30 00:42:02 · 129 阅读 · 0 评论 -
imx6ull ---- U-Boot 图形化配置及Kconfig语法
顾名思义 mainmenu 就是主菜单,也就是输入“ make menuconfig ”以后打开的默认界面,在顶层 Kconfig 中有如下代码:上述代码就是定义了一个名为“ U-Boot $UBOOTVERSION Configuration ”的主菜单,其中图形化配置工具的主要工作就是在 .config 下面生成前缀为“ CONFIG_ ”的变量,这些变量一般都要值,为 y , m 或 n ,在 uboot 源码里面会根据这些变量来决定编译哪个文件。本小节我。转载 2024-11-26 23:12:48 · 98 阅读 · 0 评论 -
ramdisk、ramfs、tmpfs、initramfs和rootfs内存文件系统概念
如果在cpio文档解压缩后的rootfs中没有init程序(init文件),内核执行旧的代码,定位并且安装root分区,执行/sbin/init程序。ram disk的使用需要从这个假的块设备到page cache之间拷贝内存,生成和销毁dentry,而且需要文件系统的驱动格式化和解释上面的数据,所以ram disk的机制不再使用。initramfs执行的init程序不返回内核(如果/init需要向内核传递控制权,可以再次安装在/目录下一个新的root设备并且启动一个新的init程序)。原创 2024-11-26 21:32:45 · 755 阅读 · 0 评论 -
从0学ARM-uboot中的网络协议栈
文章来自一口linux,自己拿来做笔记使用。转载 2024-11-25 01:04:01 · 118 阅读 · 0 评论 -
从0学ARM-网卡DM9000详解-基于uboot
在include/configs/origen.h中需要定义DM9000A基地址和编译的宏。名称说明值DM9000A 的基地址0x05000000DM9000_IODM9000A 的 INDEX 端口地址DM9000A 的 DATA 端口地址Makefile中用于控制dm9000驱动是否编译1DM9000A数据宽度表示没有使用SROM1其中DM9000_DATA 定义为基地址+0x4,刚好把 Xm0ADDR2 拉高,即把 CMD 拉高。转载 2024-11-25 01:00:19 · 567 阅读 · 0 评论 -
uboot启动源码分析
102-109 判断宏CONFIG_NAND_SPL是否定义,如果定义了设置栈地址为CONFIG_SYS_INIT_SP_ADDR,如果定义了CONFIG_SPL_BUILD、CONFIG_SPL_STACK则设置栈地址为CONFIG_SPL_STACK,否则设置栈地址为CONFIG_SYS_INIT_SP_ADDR,目的是为了执行C语言做准备。// 可用sdram的顶端。其中_image_copy_end_ofs是uboot镜像整个大小,见链接脚本文件arch/arm/cpu/u-boot.lds。转载 2024-11-25 00:49:05 · 87 阅读 · 0 评论 -
lds链接脚本基础及u-boot.lds链接脚本分析
在 目标文件中的内容至少包括编译后的机器指令代码、数据,还包括了链接时所需要的的一些信息,比如符号表、调试信息、字符串等。目标文件将这些信息按不同的属性以“ 段 ”(segment)的形式存储。以下就是一些常见的段。并且还根据一个简单程序说明编译后的目标文件的结构。主要分析表格中常见的段信息,其实还有其他段例如注释信息段( .comment ),但这不是我们关注的重点。编译过程编译: arm-linux-gcc -c -o led_on.o led_on.S #或led_on.c。转载 2024-11-25 00:17:17 · 120 阅读 · 0 评论 -
超详细分析Bootloader到内核的启动流程
Bootloader的启动过程可以分为单阶段、多阶段两种。通常多阶段的 Bootloader能提供更为复杂的功能以及更好的可移植性。从固态存储设备上启动的 Bootloader大多都是两阶段的启动过程。第一阶段使用汇编来实现,它完成一些依赖于CPU的初始化,并调用第二阶段的代码;第二阶段则通常使用C语言来实现,这样可以实现更复杂的功能,而且代码会有更好的可读性和可移植性。转载 2024-11-21 00:00:07 · 341 阅读 · 0 评论 -
Exynos4412——SD卡启动
实现Tiny4412从SD卡的启动内核与根文件系统。前面启动开发板时,需要从SD卡启动Uboot,然后从DNW下载内核和根文件系统到RAM,或者NFS挂载根文件系统。Uboot应该是支持SD卡的,可以从SD卡读取内核。Uboot把控制权交给内核后,内核必须要支持SD卡,才能访问SD卡的根文件系统,因此需要移植SD卡驱动。1.关于启动的理解嵌入式Linux开发一般需要至少三个文件:Bootloader(Uboot)、Kernel(uImage)、根文件系统(rootfs)。转载 2024-11-20 19:24:45 · 149 阅读 · 0 评论 -
uboot移植——uboot启动内核及bootargs参数讲解
嵌入式系统部署在Flash设备上时,对于不同SoC和Flash设备,bootloader、kernel、rootfs的分区是不同的。三星S5PV210规定启动设备的分区方案如下:SD/MMC设备的分区方案:NandFlash设备的分区方案:嵌入式系统在启动时,uboot、kernel、rootfs不能随意存放,必须存放在规划好的相应分区,在启动过程中uboot、kernel会到相应分区加载相应内容,确保正常启动。转载 2024-11-20 18:51:22 · 780 阅读 · 0 评论 -
imx6ull--内核编译以及移植
示例代码 35.5.1 顶层 Makefile 代码段①、在 Linux 内核中查找可以参考的板子,一般都是半导体厂商自己做的开发板。②、编译出参考板子对应的 zImage 和 .dtb 文件。③、使用参考板子的 zImage 文件和 .dtb 文件在我们所使用的板子上启动 Linux 内核,看能否启动。④、如果能启动的话就万事大吉,如果不能启动那就悲剧了,需要调试 Linux 内核。不过一般都会参考半导体官方的开发板设计自己的硬件,所以大部分情况下都会启动起来。启动。转载 2024-11-20 17:24:08 · 316 阅读 · 0 评论 -
ima6ull--uboot移植
找到 NXP 官方 I.MX6ULL EVK 开发板对应的默认配置文件以后就可以编译一下,使用如下命令编译 uboot :我们在编译的时候需要输入 ARCH 和 CORSS_COMPILE 这两个变量的值,这样太麻烦了。转载 2024-11-20 02:28:39 · 100 阅读 · 0 评论 -
imx6ull--dts语法
和 C 语言一样,设备树也支持头文件,设备树的头文件扩展名为 .dtsi。在 imx6ull-alientek-因此在 .dts 设备树文件中,可以通过 “#include ”来引用 .h 、 .dtsi 和 .dts 文件。只是,我们在编写设备树头文件的时候最好选择 .dtsi 后 缀。一般 .dtsi 文件用于描述 SOC 的内部外设信息,比如 CPU 架构、主频、外设寄存器地址范围,比如 UART 、 IIC 等等。转载 2024-11-20 01:44:20 · 146 阅读 · 0 评论 -
sd卡烧录U-Boot和Linux内核镜像,设备树以及根文件系统
首先查看设备的挂载情况df -l有挂载的设备的话取消挂载再次查看系统设备情况执行分区命令:p #输入p查看分区d #输入d删除原有分区d #输入d确认分区是否删除成功n #输入n创建新分区p #输入p选择分区空间输入分区数字输入一个地址 16384+3Gw #输入w保存分区从上面可以看出/dev/sdb磁盘存在两个分区,可以通过sudo lsblk命令验证刚才的分区情况。转载 2024-11-19 20:13:22 · 399 阅读 · 0 评论 -
imx6ull--Buildroot 根文件系统构建
buildroot 源码肯定是要从 buildroot 官网下载,官网地址为 https://buildroot.org/ ,转载 2024-11-19 00:39:07 · 358 阅读 · 0 评论 -
busybox根文件系统构建
根文件系统里面就是一堆的可执行文件和其他文件组成的?难道我们得一个一个的从网上去下载这些文件?显然这是不现实的!那么有没有人或者组织专门干这个事呢?他们负责“收集”这些文件,然后将其打包,像我们这样的开发者可以直接拿来用。答案是有的,它就叫做 BusyBox!其名字分为“ Busy ”和“ Box ”,也就是忙碌的盒子。盒子是用来放东西的,忙碌的是因为它要提供根文件系统所需的文件,所以忙碌。BusyBox 是一个集成了大量。转载 2024-11-19 00:14:50 · 79 阅读 · 0 评论 -
通过busybox制作ramdisk根文件系统
...........这里我省略了很多其他的挂载点,就生了根目录挂载点,可以看到根目录挂载在/dev/sda1上。/dev/sda是指接在SATA、SCSI第一个接口上的硬盘,所以这里表示根目录挂载在sda块设备的sda1分区上,文件系统格式是ext4。......ram0可以看到,根目录挂载在/dev/root设备节点上,文件系统格式是ext2。通过查看/dev/root链接关系,看到/dev/root其实就是/dev/ram0。转载 2024-11-18 23:36:06 · 302 阅读 · 0 评论 -
SPI转can芯片CSM300详解、Linux驱动移植调试笔记
CSM300(A)系列是一款可以支持 SPI / UART 接口的CAN模块。CSM300(A)系列隔离 SPI / UART 转 CAN 模块是集成微处理器、 CAN 收发器、 DC-DC 隔离电源、 信号隔离于一体的通信模块, 该芯片可以很方便地嵌入到具有 SPI 或 UART 接口的设备中, 在不需改变原有硬件结构的前提下使设备获得 CAN 通讯接口, 实现 SPI 设备或 UART 设备和 CAN 总线网络之间的数据通讯。外观CSM300使用SPI转CAN功能时, 需要将MODE引脚接至高电平。转载 2024-11-10 15:12:26 · 568 阅读 · 0 评论 -
uboot命令使用
Makefile主要的功能就是控制uboot编译的过程,Makefile内的配置信息有版本信息的配置,调用mkconfig脚本生成配置信息,交叉编译工具链设置(一般需要设置CROSS_COMPILE = arm-linux-)、依据开发板信息配置头文件include/configs/smdkv210single.h调用config.mk脚本生成/include/autoconf.mk控制编译过程。如:文件内主要配置的信息有:内存基地址、机器码、启动方式、串口、I2C、网络信息、系统时钟、内存参数等。转载 2024-11-02 19:02:30 · 231 阅读 · 0 评论 -
从0学ARM-从0移植uboot支持exynos4412
本文主要目的是如何从0编译和移植uboot,增加串口、网络、emmc等功能,让他支持exynos4412开发板。转载 2024-11-02 18:52:54 · 100 阅读 · 0 评论 -
Cortex-A9 uboot启动代码详解
uboot启动流程如上图所示:设备上电之后,先执行iROM中的出厂代码,先进行必要硬件的初始化,再去执行uboot,通常把kernel、设备树文件放到flash中程序启动之后,往往先从flash启动,运行uboot第一步:先进行硬件的初始化(svc模式栈、clock、内存、串口第二步:自搬移:把uboot从flash中拷贝到RAM中,跳转到RAM中执行剩下的uboot代码第三步:把内核拷贝到RAM中,执行内核,把控制权交给内核。转载 2024-11-02 18:39:01 · 204 阅读 · 0 评论 -
Linux模块文件如何编译到内核和独立编译成模块?
选择的原则是将与内核其他部分关系较远且不经常使用的部分功能代码编译成为可加载模块,这有利于减小内核的长度,减少内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;这里我们假定要编译的内核最终在三星的板子上运行,soc名字是exynos,三星公司其实已经将自己的配置文件放置在 ./arch/arm/configs/exynos_defconfig。该模块文件就是与前面编译的内核配套的驱动模块,如果开发板的内核版本与上面编译的版本号一致,那么该模块文件就可以在开发板上insmod。转载 2024-11-02 17:36:14 · 542 阅读 · 0 评论 -
Linux移植:如何制作rootfs?
理论上说一个嵌入式设备如果内核能够运行起来,且不需要运行用户进程的话,是不需要文件系统的,文件系统简单的说就是一种目录结构,由于 linux操作系统的设备在系统中是以文件的形式存在,将这些文件进行分类管理以及提供和内核交互的接口,就形成一定的目录结构也就是文件系统,文件系统是为用户反映系统的一种形式,为用户提供一个检测控制系统的接口。因此,一个系统中可以同时存在不同的文件系统。基本的文件系统结构,包含一些必需的目录比如:/dev,/proc,/bin,/etc,/lib,/usr,/tmp等。转载 2024-11-02 16:32:18 · 77 阅读 · 0 评论