《一步一步写嵌入式操作系统》读书笔记1—Skyeye介绍、安装和HelloWorld
2013-11-14
最近在看《一步一步写嵌入式操作系统》,感觉此书甚好,许多地方讲得很清楚、可操作性强,计划边读边实践边写笔记,希望能够逐步熟悉嵌入式操作系统底层的东西,最终剪裁出一套实用的实时嵌入式操作系统,备选的裁剪对象有ucos、RTlinux和uClinux。
SkyEye介绍
“SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟的环境中运行,而且开发人员可以通过SkyEye调试操作系统和系统软件。由于SkyEye的目标不是验证硬件逻辑,而是协助开发、调试和学习系统软件,所以在实现上SkyEye与真实的硬件环境相比还是有一定差别的。SkyEye在时钟节拍的时序上不保证与硬件完全相同,对软件透明的一些硬件仿真进行了一定的简化。这样带来的好处是SkyEye的执行效率更高。”详细介绍见[这里](http://www.ibm.com/developerworks/cn/linux/l-skyeye/part1/)
SkyEye安装
在Linux下可直接安装,在Windows下要先安装Cygwin。都可以Google到很多资料。
两种方法:
1.sudo apt-get install skyeye,版本是1.2.5
2.自己编译安装。
我的系统是Ubuntu12.10,64位,折腾了好久,从0.9到最新的版本都试过,都没编译安装成功过。
原因有以下几点:
1.GCC等对版本有要求
2.64位的Ubuntu需要兼容32位的包
3.针对不同的Ubuntu版本,一些宏定义和函数需要相应修改。
无奈的我最后只能暂时用从软件源里安装的1.2.5版本。暂时没发现大的问题,不足的地方在于对书中用到的ARM920T支持不好,貌似是地址映射不对,串口打印出来的信息无法在终端上显示。所以我现在用的ARM7TDMI架构的S3C44B0X,对于书里提到的例子,代码里内存地址什么的需要根据芯片手册相应修改。
关于安装,可以Google到大量资料和常见问题的解决方法,不再赘述。
HelloWorld
参考[Skyeye下的Hello world测试](http://www.mculover.com/post/103.html)
1.新建一个helloworld.c文件:[root@localhost root]#vi helloworld.c
2.输入代码: #define UTXH0 ((volatile unsigned int *)(0x01d00020))
//S3C44B0X的串口0发送寄存器地址是UTXH0
void helloworld(void){
const char *p="HelloWorld!\r\n";
while(*p){
*UTXH0=*p++;
}
while(1);
}
3.交叉编译。使用书上推荐的arm-elf-gcc交叉编译器。
4.将源码编译生成.o目标文件:[root@localhost root]#arm-elf-gcc -O -c helloworld.c,新生成helloworld.o文件会出现在当前目录下。
5.将目标文件链接生成可执行文件,这里生成带有很多信息的elf格式:[root@localhost root]#arm-elf-ld -e helloworld -Ttext 0x00000000 helloworld.o -o helloworld,新生成的helloworld文件会出现在当前目录下
6.将elf文件编译为.bin文件:[root@localhost root]#arm-elf-objcopy -O binary helloworld helloworld.bin,新生成的helloworld.bin文件会出现在当前目录下
7.在当前目录下新建一个skyeye.conf文件:[root@localhost root]#vi skyeye.conf
输入:
cpu:arm7tdmi
mach:s3c44b0
#2M Flash ROM
mem_bank:map=M,type=RW,addr=0x00000000,size=0x00200000,file=./helloworld.bin#IO Addr
mem_bank:map=I,type=RW,addr=0x01c00000,size=0x00400000
8.运行。在终端中输入skyeye 
《一步一步写嵌入式操作系统》读书笔记1—Skyeye介绍、安装和HelloWorld的更多相关文章
- 《The Linux Command Line》 读书笔记01 基本命令介绍
<The Linux Command Line> 读书笔记01 基本命令介绍 1. What is the Shell? The Shell is a program that takes ...
- 单字节的FIFO缓存(30天自制操作系统--读书笔记)
从今天起,写一些读书笔记.最近几个月都在看<30天自制操作系统这本书>,书虽说看的是电子书,但可以花钱买的正版书,既然花费了金钱,就总得有些收获. 任何人都不能总是固步自封,想要进步就得学 ...
- 锋利的jQuery--编写jQuery插件(读书笔记五)[完结篇]
1.表单验证插件Validation 2.表单插件Form 3.动态事件绑定插件livequery 可以为后来的元素绑定事件 类似于jQuery中的live()方法 4.jQuer ...
- R语言实战读书笔记1—语言介绍
第一章 语言介绍 1.1 典型的数据分析步骤 1.2 获取帮助 help.start() help("which") help.search("which") ...
- 【读书笔记】iOS-iCloud介绍
iCloud是一种面向消费者市场的云存储服务,苹果公司已经做了大量的工作让用户能够平滑过渡到iCloud,不过对开发者而言这意味着新的负担. 怎样使用iCloud? 你可以使用2种方式在你的应用中使用 ...
- 一个人写的操作系统 - Sparrow OS
一个人写的操作系统 - Sparrow OS 自己写一个操作系统,这是在过去的几年里我一直为之努力的目标,现在终于完成了. 缘起 自己动手写操作系统的动机最初来自于学习Linux遇到的困难. 我是一个 ...
- 读书笔记--<<会说话的代码>>
三天看完一本书,说出来我都不信,不过我还真是史无前例的做到了, 现在分享一下我的收获,希望大家拍砖,共同讨论一下. <<会说话的代码>>一书是我们BJDP小组里的王洪亮老师的一 ...
- 读书笔记--Android Gradle权威指南(上)
本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 最近看了一本书<Android Gradle 权威指南>,对于 Gradle 理解又更深了,但不想过段时间就又忘光了,所 ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
随机推荐
- Android:创建Android工程
创建Android工程,在Eclipse左栏右键 new->project.. (版本不一样,名字会有所区别) 然后选择Android下的Android application projec ...
- Spring配置概述
1.Spring容器 1)要使应用程序中的Spring容器成功启动,需要以下三方面的条件都具备: · Spring架构的类包都已经放在应用程序的类路径下: · 应用程序为Spring提供完备的Bean ...
- Map.putAll方法——追加另一个Map对象到当前Map集合(转)
该方法用来追加另一个Map对象到当前Map集合对象,它会把另一个Map集合对象中的所有内容添加到当前Map集合对象. 语法 putAll(Map<? extends K,? extends V ...
- UVa 12169 (枚举+扩展欧几里得) Disgruntled Judge
题意: 给出四个数T, a, b, x1,按公式生成序列 xi = (a*xi-1 + b) % 10001 (2 ≤ i ≤ 2T) 给出T和奇数项xi,输出偶数项xi 分析: 最简单的办法就是直接 ...
- [反汇编练习] 160个CrackMe之017
[反汇编练习] 160个CrackMe之017. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...
- [Sciter系列] MFC下的Sciter–2.Sciter中的事件,tiscript,语法
[Sciter系列] MFC下的Sciter–2.Sciter中的事件,tiscript,CSS部分自觉学习,重点说明Tiscript部分的常见语法和事件用法. 本系列文章的目的就是一步步构建出一个功 ...
- HDU 3746 Cyclic Nacklace 环形项链(KMP,循环节)
题意: 给一个字符串,问:要补多少个字符才能让其出现循环?出现循环是指循环节与字符串长度不相等.比如abc要补多个变成abcabc.若已经循环,输出0. 思路: 根据最小循环节的公式,当len%(le ...
- poj 3694 Network
题意: 添加每条新连接后网络中桥的数目// 超时 先放着了 ,下次改//早上这代码超时了 下午改了,代码在下面#include <iostream> #include <algori ...
- rpm 命令参数使用详解
RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序” rpm 执行安装包 二进制包(Binary)以及源代码包(Source)两 ...
- c# Chart设置样式
一.chart属性熟悉 能够对C# chart控件属性熟悉起帮助的code, 现在分享给大家,Chart Operate Demo Code Download,如有帮助,别忘点个赞. Chart ...