第 4 章:802.11n(Wi-Fi 4)— 立交桥时代
第 3 章:硬件与射频 — 道路基础设施
第 2 章:802.11a/b/g — 从乡间小路到城市主干道
第 1 章:802.11-1997 — 小镇的第一个十字路口
第 0 章:导读 — 城市交通的 Wi-Fi 版本
[Make MyOS] Start Again
主要是受打击了..md..太多不会了,又重新拾起来了,这次为了方便也不搞什么虚拟机了,所有环境完全在Win10上,主要是笔记本有点破,再搞个虚拟机有点吃不消了..所以参考了下各种教程,最终使用vscode + gdb + qemu的组合..或许qemu会换成Bochs..
1 环境搭建
1.1 gcc工具链
可以去这个github:https://github.com/blessingwater/GCC_x86_64-elf-tools-windows 下载,解压之后添加环境变量即可
Compile system app with AndroidStudio
作为OS研发,在framework加点api,写个apk验证想法是常有的事,什么系统api,隐藏api更是想用就用,怎么能被@hide限制?所以一般的写的apk都是集成在系统源码里面,比如Settings,加上系统签名,这样确实没有@hide限制了,但是这样基本都是基于记事本开发,没有IDE的提示来得舒服,但是用Android Studio打开,由于原生sdk的限制,调用隐藏的api或咱们自己加的api会报红,这代码写起来就不爽。所以咱就是要整个两者兼得的方法,核心是两点,一是系统的jar包,也就是sdk;二是platform签名,没有签名认证,是安装不了的
关于sdk,咱们手上有源码是可以自己编译的,直接lunch sdk-eng,整编就好了,出来个啥,不大清楚,没用过,这里不用这个法子,此处选择用哪个模块导入哪个模块的jar包;系统签名相信就按着步骤来生成就好了
[Make MyOS] Starting kernel
上一节loader程序装载完kernel后,执行了jmp SelectorCode64:OffsetOfKernelFile命令跳转到kernel部分了,意味着Loader将处理的控制权交给了Kernel
处理器把控制权交给kernel后,kernel最先执行的是内核执行头程序。内核执行头程序是一段精心设计的汇编代码,而且必须借助特殊的编译链接方法才能得到最先执行。
内核头程序负责为操作系统创建段结构和页表结构,设置某些结构的默认处理函数、配置关键寄存器等工作。在完成上述工作后,依然要借助远跳指令才能进入系统内核主程序。
如何将内核执行头程序编译生成到整个内核程序文件的起始处?手动编写内核程序的链接脚本,在内核程序的链接过程中,链接器会按照链接脚本描述的地址空间布局,把编译好的各个程序片段填充到内核程序文件中。
看完有点懵,都是内核程序为啥要咱手动指定谁先谁后?大概是因为内核头是汇编写的,内核是c写的..要让head先执行就得在lds中指定第一条指令是啥..编译部分参考哈: ld - 链接脚本学习笔记与实践过程
Optimize hexo
之前gitee图床挂了,然后gitee想用pages也必须用身份证,折腾一整最后放弃了gitee,直接用github好了(还是github靠谱),本想着研究一下hugo,但是新东西费时间啊,就继续使用hexo+next了,算是升了个级,并且添加了github CI,解决环境,部署问题,一个字,爽!
首先搭建hexo博客步骤还是和 Use hexo + github to build a blog | Sidney God 一样,按照步骤做就好了,注意这里不要去改node_modules源码了(好像除了markdown和mathjax冲突,也没啥需要改的,kmarked不适用新版本hexo,别折腾了..),环境部署麻烦