
启动引导
redwingz
这个作者很懒,什么都没留下…
-
原创 利用cache缓存初始化内存
系统内存的初始化涉及到内存控制器的配置,需要读取DRAM条上EEPROM存储的各种配置参数,动态配置内存控制器。用汇编语言实现稍显复杂,当前的启动引导程序(如uboot)采用C语言实现这部分功能。然而,问题是在内存未初始化之前,系统是在FLASH设备中运行的汇编,C程序不能运行(原因是C语言函数的栈操作不能在FLASH中进行,FLASH的写操作需要首先擦除再写入)。要想运行C程序就需要找到一块在内...2018-07-08 00:58:171566
0
-
原创 SYSLINUX 6.03不支持64bit的ext4
最近遇到启动盘格式化为ext4文件系统,syslinux无法启动的问题。查看其官网(https://www.syslinux.org/wiki/index.php?title=Filesystem),指出6.03版本不支持64bit的ext4文件系统,解决版本是在制作ext4文件系统时,关闭64bit选项开关。mke2fs -O ^64bit /dev/sdb1官网上提示在6.04版本会修...2018-08-07 23:10:362452
0
-
原创 网络设备模块与驱动的初始化顺序控制
网络设备模块的初始化,使用subsys_initcall调用。subsys初始化例程的优先级为4,排在pure_initcall(优先级0)、core_initcall(1)、postcore_initcall(2)和arch_initcall(优先级3)之后。排在device_initcall(优先级6)之前。系统在启动过程中,函数do_initcalls按照优先级顺序依次调用注册的initca...2018-08-08 14:10:33235
0
-
原创 ARM架构生成uImage过程
内核编译完成之后首先在顶层目录中生成vmlinux名称的原始ELF文件,接着在arch/arm/boot/Makefile文件中,使用objcopy工具,将vmlinux转化为Image镜像,用到的参数由变量OBJCOPYFLAGS和$(OBJCOPYFLAGS_$(@F)指定,makefile编译目标位于scripts/Makefile.lib文件中。arch/arm/boot/Makef...2019-04-16 20:22:53810
0
-
原创 多核网络处理器启动流程
以下主要针对RMI的多核处理器,例如XLR732,其由八个核心,每个核心由4个硬线程组成。上电之后,第一个核心的第一个线程启动(Core0/Thread0),从复位向量地址开始执行。假设使用的bootloader是Uboot,此线程负责初始化当前核心的cache缓存,内存初始化等。之后负责启动其它核心的首线程,即Core1/Thread0一直到Core7/Thread0。这些线程启动之后,进行本核...2019-04-24 20:27:19237
0