zoukankan      html  css  js  c++  java
  • 《一步一步写嵌入式操作系统》读书笔记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! ";
          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

  • 相关阅读:
    【BZOJ3193】[JLOI2013]地形生成 DP
    【BZOJ3782】上学路线 组合数+容斥+CRT
    Web安全学习笔记之Kali部署DVWA和OWASPBWA
    Web安全学习笔记之Kali配置国内软件更新源
    Python面试题之列表推导式
    前端学习笔记之HTML中的id,name,class区别
    Web安全学习笔记之Nmap脚本使用指南
    Web安全学习笔记之Nmap扫描原理与用法
    Web安全学习笔记之Openvas配置,使用,报告
    Python面试题之Python中应该使用%还是format来格式化字符串?
  • 原文地址:https://www.cnblogs.com/yffq/p/3602760.html
Copyright © 2011-2022 走看看