01 2023 档案
摘要:stext() > __enable_mmu() > __turn_mmu_on() > __mmap_switched() > start_kernel() > setup_arch() > setup_machine_fdt() > of_flat_dt_match_machine() 在函数
阅读全文
摘要:uboot通过环境变量 bootargs 传递参数给 kernel 内核,bootargs存储在设备树的 chosen 节点中,则 kernel 内核是通过读取设备树的 chosen 节点中的 bootargs 属性获取 uboot 传递过来的参数。 U_BOOT_CMD( bootz, CONFI
阅读全文
摘要:一、设备树 下面是我们将要实验的设备树的例子: / { #address-cells = <1>; #size-cells = <1>; demo_level0 { compatible = "simple-bus"; ranges = <0x0 0x3000000 0x3000>; #addres
阅读全文
摘要:gcc -shared -fPIC liberr.c -o liberr.so -fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code), 则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行
阅读全文
摘要:微内核:提供操作系统核心功能的内核的精简版本,它设计成在很小的内存空间内增加移植性,提供模块化设计,以使用户安装不同的接口与,如DOS、Workplace OS、Workplace Unix等。IBM、Microsoft等操作系统都采用了这一研究成果的优点。 宏内核:是操作系统核心架构的一种,此架构
阅读全文
摘要:修改的文件有如下: configs\mx6ull_14x14_evk_emmc_defconfig include\configs\mx6ullevk.h 注:linux中sd卡设备命名固定为 mmcblkX,如 mmcblk0p0 表示使用SD卡控制器1控制的SD卡分区0 列举文件内部分宏作用:
阅读全文
摘要:uboot启动代码中,函数board_init_f()的一个功能就是配置变量gd的各个成员变量。首先获得DRAM的最高地址,然后每占用一块内存,往下减。下图为一个例子: gd->relocaddr:uboot第一次运行的地址是0x87800000,之后需要为kernel腾空间,需要把uboot搬移到
阅读全文
摘要:uboot整体编译流程 编译uboot的时候,如果加上V=1,可以查看完整的命令 Makefile 添加: CROSS_COMPILE=arm-none-eabi- ARCH=arm 编译 make mx6ul_14x14_evk_defconfig make -j4 // 4核一起编译
阅读全文