读《一步一步写嵌入式操作系统》

7 篇文章 0 订阅
6 篇文章 0 订阅

前段时间看了看SkyEye模拟器,期间留意到CSDN的一些大虾提到《一步一步写嵌入式操作系统》这本书,于是专门去书店买了一本。打开一看真是受益匪浅,这真是一本“写”出来的书,通篇行文流畅,主旨明确,比当下很多“拼”出来的技术书籍不知道高出多少。

 

这本书是一本基于ARM架构的关于操作系统的书籍,主旨是引导读者一步一步编写一个操作系统。相信你明白,当然作者也知道,仅靠一本书的引导是无法编写一个真正意义的操作系统的,这本书的真正意义在于通过简单可行的实践,让读者可以真正理解操作系统的诸多基本理论。

 

另外,因为是基于ARM架构的,所以,通过阅读这本书读者还可以深入学习ARM架构和ARM汇编。其实学习ARM汇编语言本身并不难,相关的基本知识都不难理解,学好ARM汇编的难点在于积累ARM汇编的开发经验。学习ARM汇编过程中,很多同学都无法参与真正的汇编项目,因而就缺少解决实际问题的经验,就不能真正的掌握ARM汇编。而《一步一步写嵌入式操作系统》提到的这个方法不失为一个好方法,就是通过编写自己的操作系统来学习ARM汇编。虽然编写的操作系统可能很简单,可能很脆弱,不过都没有关系,你的目的是学习知识,积累经验。

 

从阅读方式来讲,个人建议有两种读法,一种是通读的方法,一种是结合实践的方法。

时间比较紧张的同学可以采用通读法,通篇读下来也就几天时间,不需要深入细节,从中你可以了解到很多操作系统和ARM架构的知识。

时间允许的同学可以采用结合实践的方法,按着作者的方法一步一步编写自己的操作系统,中间可以加入自己的一些想法。不过采用这种读法之前还是建议先通读一遍,先有个整体了解再开始细致的工作。

 

如果你对操作系统有兴趣,如果你对ARM架构有兴趣,去买一本吧!

最后声明,我不是托,我不认识作者,虽然我很崇拜这种人。

一步嵌入式操作系统 linux平台实现代码 step 0 准备开发环境 1 安装交叉编译工具 sudo apt-get install gcc-arm-none-eabi sudo apt-get install gcc-arm-linux-gnueabihf sudo apt-get install g++-arm-linux-gnueabihf 2 手边编译skyeye 用apt命令安装的skyeye模拟器版本(1.2.5)有bug,需要手动编译更高版本的skyeye 下载并解压skyeye 1.2.6_rc1的代码, ~/Downloads/skyeye-1.2.6_rc1 根据执行skyeye-1.2.6_rc1/INSTALL的说明 1 执行 ./configure 2 执行 make 后 编译错误1: In file included from /usr/include/fcntl.h:289:0, from nandflash/nandflash_smallblock.c:19: In function ‘open’, inlined from ‘nandflash_sb_setup’ at nandflash/nandflash_smallblock.c:519:24: /usr/include/x86_64-linux-gnu/bits/fcntl2.h:50:4: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT or O_TMPFILE in second argument needs 3 arguments __open_missing_mode (); 解决方法: 修改skyeye-1.2.6_rc1/device/nandflash/nandflash_smallblock.c 519行 if ((nf->fdump= open(dev->dump, FILE_FLAG)) < 0) 改为: if ((nf->fdump= open(dev->dump, FILE_FLAG, 0777)) < 0) 编译错误2: gcc -g -O2 -o skyeye skyeye.o ./utils/libutils.a ./arch/arm/libarm.a ./device/libdev.a ./arch/mips/libmips.a ./arch/ppc/libppc.a ./arch/bfin/libbfin.a ./arch/mips/libmips.a ./arch/coldfire/libcoldfire.a -lc ./utils/libutils.a -lbfd -lm -lc ./arch/mips/libmips.a(decoder.o):在函数‘decode’中: /home/kolya/Downloads/skyeye-1.2.6_rc1/arch/mips/common/decoder.c:1079:对‘sign_extend_UInt32’未定义的引用 /home/kolya/Downloads/skyeye-1.2.6_rc1/arch/mips/common/decoder.c:1105:对‘sign_extend_UInt32’未定义的引用 /home/kolya/Downloads/skyeye-1.2.6_rc1/arch/mips/common/decoder.c:1049:对‘sign_extend_UInt32’未定义的引用 /home/kolya/Downloads/skyeye-1.2.6_rc1/arch/mips/common/decoder.c:1027:对‘sign_extend_UInt32’未定义的引用 /home/kolya/Downloads/skyeye-1.2.6_rc1/arch/mips/common/decoder.c:1013:对‘sign_extend_UInt32’未定义的引用 ./arch/mips/libmips.a(decoder.o):/home/kolya/Downloads/skyeye-1.2.6_rc1/arch/mips/common/decoder.c:1001: 跟着更多未定义的参考到 sign_extend_UInt32 ./arch/mips/libmips.a(decoder.o):在函数‘decode’中: /home/kolya/Downloads/skyeye-1.2.6_rc1/arch/mips/common/decoder.c:240:对‘divide_UI
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值