摘要:
0号进程 0号进程称为 idle 进程,其 pid 等于0。 每个进程都有一个进程控制块PCB(Process Control Block),PCB的数据结构类型是struct task_struct。idle进程对应的PCB是 struct task_struct init_task。 idle进 阅读全文
摘要:
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核一起编译 阅读全文
摘要:
ARM汇编指令格式如下 每一条汇编语句都可以转为32bit的数字 <c>:可选,不写表示无条件执行。举例:ADDEQ表示CPSR.Z等于1时执行ADD指令 ret reg ret 是一个宏 作用是返回,本质上的操作:执行ret之后,会把lr寄存器里的值赋值给pc,这样就实现了跳转 bl 函数 在跳转 阅读全文