本节将实现二级引导器的具体工作:检查CPU是否支持64位工作模式,收集内存信息,是否符合系统最低运行要求,接着再设置系统需要的MMU页表,显卡模式,释放中文字体文件;
(相关资料图)
init_bstartparm()函数:检查CPU模式,收集内存信息,设置内核栈,设置内核字体,建立内核MMU页表数据;
检查与收集机器信息:
machbstart_t结构体,清零,在内存1MB处初始化;
检查CPU:
init_chkcpu函数,使用CPUID指令检查是否支持64位长模式,并设置之前的machbstart_t结构体的mb_cpumode为64位;
获取内存布局:
s_e820结构体用来描述一段内存;init_mem函数完成:获取这个结构体数组;检查内存大小,不能太小;
其中的 mmap函数是通过之前的realadr_call_entry函数,调用了实模式下的_getmmap函数,此函数内部调用了BIOS中断,就能获取结构体数组;
初始化内核栈:
在machbstart_t结构体中,记录栈地址和栈大小,供内核在启动时使用;
注意要检查内核栈空间与内存中已经存在的信息是否发生冲突;
放置内核文件和字库文件:
内核已经编译成一个独立的二进制程序,和其他文件被一起打包到映像文件中,因此需要解包出来,放在特定的物理内存中;
r_file_to_padr函数在影像中查找相应的为念,并复制到对应的地址,返回文件大小;;放置完更新machbstart_t结构体中的数据;
结构体中mb_nextwtpadr始终指向下一段空闲内存的首地址;
建立页表数据:
在二级引导器中建立MMU页表数据,目的就是在内核加载运行之初开启长模式,MMU需要的页表数据已经准备好 了;
映射核心逻辑:两重循环,外层循环控制页目录顶指针,16项,内层循环执行一个页目录,每个页目录中有512个物理页地址;
内核启动初期,虚拟地址和物理地址要保持相同;
设置图像模式:
上电初,显卡会自动进入文本模式,不能显示汉字和图形;要切换到图像模式;
用BIOS中断,c函数调用;
处理VBE 模式的代码;定义了显卡的几种图形模式,包括分辨率,像素格式,显存大小;
串联:
在init_bstartparm函数中串联起来上述函数,依次调用;
显示logo:
24位 位图文件;logo函数,
运行实验之后更新;
标签:
- 04 设置工作模式与环境(下)收集信息
- 热消息:linux下查看文件内容工具发布啦!
- JS中的进程和线程_热点在线
- 天天亮点!长峰医院火灾:一病房内三名老人靠湿毛巾捂住口鼻,坚持到消防员救出
- 苦苦支撑!詹姆斯半场9中5砍下12+6 今日最新
- 陈梦再胜石川被邀合影,对决日本女乒二号人物挑战更大_今日关注
- 国王:萨博尼斯将会出战明日战勇士G3
- 世界快看:科学家发现三叠纪“长颈”龙家族新成员
- 纠缠量子光源在芯片上集成
- 中国科学家精确测量!银河系“体重”算出来了 每日热点
- 快报:可以开启“吃瓜模式”啦
- 陈飞宇说:运气是演员无法人为掌控的,要把本职工作做好|热推荐
- 天天报道:杭州一男子嫌未盛满米饭暴打食堂阿姨
- 嘉兴人,高速通行重磅消息!
- 当前要闻:共享电动车乱停放…番禺持续整治!大北路、平康路等有所改善
- 世界今头条!旧改快讯┃深圳最后一个棚改!罗湖草埔片区项目启动
- 深圳二手房“指导价贷款”取消,有银行已执行?|热头条
- 观速讯丨家庭防火指南来了!这些细节最易被忽视,一图读懂
- 要闻速递:中国东方演艺集团成立音乐剧团 将推出《星辰》等作品
- 明天上午,北京牛街临时交通管制!|环球观焦点
- 德国防长:讨论乌克兰加入北约为时尚早
- 【独家】海关查获1.8吨旧和服,退运!
- 【环球快播报】iban号码是什么意思_iban号码是什么
- 唐继尧银元价格(2023年04月21日)
- 2399元起!天马供货小米平板6 Pro_世界热点评
- 世界热资讯!长川科技股东户数增加53.80%,户均持股56.4万元
- 【天天速看料】全国首张境外游艇驾照直换证在三亚签发
- 环球播报:陕西西咸新区计划供应25宗宅地出让 8宗为安置性商品房用地
- 达诚基金管理有限公司旗下基金2023年第1季度报告提示性公告-微资讯
- 6000吨榴莲到达!榴莲批发价1斤低至20元