公共资源网站:https://source.codeaurora.org/external
一、上电
二、BootLoader
1、Uboot作用与目的:从flash读内核到SDRAM后启动内核。
(1)初始化硬件;设置时钟(屏蔽中断)、看门狗(关看门狗)、设置SDRAM、初始化NAND FLASH(设置栈、设置sp->内存、调用C函数-读出内核启动内核)、网卡、串口等;
(2)若BootLoader比较大,将其重定位到SDRAM;
(3)将内核由NAND FLASH 读入SDRAM;
(4)设置要传递到内核的参数;
(5)跳转执行内核,启动内核(代码拷贝,从flash(NOR flash/Nand flash)独读出内核放到SDRAM,启动内核);
(5)清bss段;
(6)调用start_armboot;
2、下载源码:
Uboot官方下载地址:https://ftp.denx.de/pub/u-boot/;
(1)wget https://ftp.denx.de/pub/u-boot/u-boot-2021.07.tar.bz2;
(2)tar -xjvf u-boot-2021.07.tar.bz2;
(3)打补丁文件:patch -p **数字 < 补丁文件;
(4)配置,make **** config;
(5)编译,make;
3、代码分析
(1)第一个文件:cupstart.S
(2)链接脚本u-boot.lds
(3)等
一些概念:
(1)块对齐;
#define S3C2440_MPLL_200MHZ .text .global _start _start: ldr r0 = 0x530000 mov r1, #0 str r1, [r0] ldr r0 =0x4c000014 mov r1 #0x03 str r1, [r0] mrc p15, 0 , r1, c1, c0, 0 orr r1, r1, #0xc0000000 mcr p15, 0, r1, c1,c0, 0 ldr r0 =
三、启动Linux kernel
四、挂接根文件系统
五、启动根文件系统下的应用程序
ramdisk文件系统:
基本原理:划分一块内存(断电不保存)作为磁盘使用;不是文件系统,是将文件系统加载到内存的一种机制;将加载的文件系统作为根文件系统,
1.initrd,可格式化并加载, , 大小固定 ( kernel2.0/2.2及以上支持 );
实际使用的是ext2文件系统,
2.initramfs,通过ramfs 来实现 , 不能被格式化 , 大小随所需要的空间增加或减少 (kernel2.4以上支持);
资源链接:
ramdisk文件系统的介绍与制作_倚楼听风雨的博客-CSDN博客_ramdisk文件系统
initramfs文件系统的介绍与制作_倚楼听风雨的博客-CSDN博客_initramfs文件
笔记备注:
1.load
usb start 0
fatload usb 0 0x23000000 c2p_an.dtb
fatload usb 0 0x23100000 /ramdisk/uImage
fatload usb 0 0x23100000 /uImage-ok
fatload usb 0 0x23100000 /mount_8/
fatload usb 0 0x23100000 /MSTAR/uImage
fatload usb 0 0x23000000 DTB.dtb
fatload usb 0 0x23100000 /11/loader.ramdisk
bootm 0x23100000
ubiattach /dev/ubi_ctrl -m 3
mount -t ubifs /dev/ubi0_1 /config
mount -t ubifs /dev/ubi0_2 /application
mount -t ubifs /dev/ubi0_3 /vendor/lib
mount -t ubifs /dev/ubi0_4 /vendor/lib/utopia
2. ulimit -s 4196
ulimit -c unlimited > /dev/null 2>&1
4. udstar - Execute the script file that is stored in usb disk
ustar - ustar - update kernal & root file system automatically by script file



