《一步一步写嵌入式操作系统》读书笔记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高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
随机推荐
- SQLite数据库的体系结构(翻译自sqlite.org)
$1 简介 本文档描述了SQLite库的体系结构,这些信息对那些想理解和修改SQLite的内部工作机制的人是有用的. 下图显示了SQLite的主要组成部件及其相互关系,下面的内容将描述每一 ...
- linux 免交互状态下修改用户密码
当利用某些工具对linux用户进行远程密码更改时,输入[ passwd 用户名 ] 后需要输入两次密码, 但是如果你利用的某些工具无法与linux进行交互的情况下,就没办法变更用户密码了,这个时候可以 ...
- Android Handler传递参数动态更新UI界面demo
package com.example.demo_test; import android.app.Activity; import android.os.Bundle; import android ...
- 转:socket编程在windows和linux下的区别
如无其它说明,本文所指Linux均表示2.6内核Linux,GCC编译器,Windows均表示Windows XP系统,Visual Studio 2005 sp1编译环境. 下面大概分几个方面进行罗 ...
- Android Activity形象描述
Activity就是形象的说就是一个容器,在里面放置各种控件(按钮,文本,复选框等),就形成了软件的界面~ Activity是可见的,如果不加任何控件的话,那么就像Windows中的空白窗体一样 通过 ...
- C语言中的宏展开
#include<stdio.h> #define f(a,b) a##b #define g(a) #a #define h(a) g(a) int main() { printf(,) ...
- Qt之QTableView添加复选框(QAbstractItemDelegate)
简述 上节分享了使用自定义模型QAbstractTableModel来实现复选框.下面我们来介绍另外一种方式: 自定义委托-QAbstractItemDelegate. 简述 效果 QAbstract ...
- UVa 10780 (质因数分解) Again Prime? No Time.
求mk整除n!,求k的最大值. 现将m分解质因数,比如对于素数p1分解出来的指数为k1,那么n!中能分解出多少个p1出来呢? 考虑10!中2的个数c:1~10中有10/2个数是2的倍数,c += 5: ...
- BZOJ_1627_[Usaco2007_Dec]_穿越泥地_(bfs)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1627 网格图,给出起点,终点,障碍,求最短路. 分析 简单的宽搜. #include < ...
- 搜集的一些RTMP项目,有Server端也有Client端
查询一些RTMP的协议封装时找到了一些RTMP开源项目,在这里列举一下,以后有时间或是有兴趣可以参考一下: just very few of them. Red5 only contains a se ...