• 我的第一个裸机程序


    学电子专业的同学伤不起啊,每天都要面对那复杂的数学运算。生活中充满了数字,也就没有什么时间来搞点业余爱好了。只有午睡时有点空来写点;

    学习过单片机的应该都写过一点点程序,可是这样一个嵌入式开发平台如何能够做一些很简单的事呢?我用我学过的单片机思路来写点ARM11裸机程序。

    我用的是FriendlyARM tiny6410。我写的一个最容易的LED程序,程序我只用了C语言,没有用汇编(汇编真的不是那么好写,蛋疼)

    下面是我写的程序的源代码:

    //Copyright  - (c) 2011/1/10 xueyang

    #define rGPKCON0        (*(volatile unsigned *)(0x7F008800))
    #define rGPKCON1        (*(volatile unsigned *)(0x7F008804))
    #define rGPKDAT         (*(volatile unsigned *)(0x7F008808))
    #define rGPKPUD         (*(volatile unsigned *)(0x7F00880C))

    #define rMPLLCON      (*(volatile unsigned *)0x7E00F010)
    #define rCLKDIVN      (*(volatile unsigned *)0X7E00F020) 
    void delay(void);
    _start(void)
    {
        rGPKCON0 = (rGPKCON0 & ~(0xffffU<<16))|(0x1111U<<16);
        rGPKPUD  = (rGPKPUD  & ~(0xffU << 8))|(0x00U<<8);
        for(;;)
        {
            int data = 0x09;
            rGPKDAT = (rGPKDAT & ~(0xf<<4)) | ((data & 0xf)<<4);
            delay();
            data = 0x06;
            rGPKDAT = (rGPKDAT & ~(0xf<<4)) | ((data & 0xf)<<4);
            delay();
        }
    }
    void delay(void)
    {
        unsigned int k;
         for(k = 0; k < 200000; k++);
    }

    程序是非常的容易的,我这里就不多讲了。

    可以用仿真器下载到开发板上去,也可以用dnw下载到开发板(方法的驱动/程序源码后面有时间再写一篇)

    我们程序中可以不用汇编,

    我们的C编译器会给我们带来一些新的问题:

    1.头文件

    2.库函数

    3.地址

    4.多个程序文件编译时的依赖

    但编译要注意,我用的下面的命令编译来解决目前面临的问题(环境是之前配置好的交叉编译环境):

    arm-none-linux-gnueabi-gcc -c hello.c -o hello.o                                        //编译生成可执行文件

    arm-none-linux-gnueabi-ld -Ttext=0x50000000 hello.o -o hello -e _start      //编译生成无.o的文件,指定_start处开始运行,并指定运行地址0x50000000

    arm-none-linux-gnueabi-objcopy -I elf32-littlearm -O binary hello hello.bin              //去头(格式转换)

    由于水平有限,若有什么错误,欢迎大家指正!<xueyang1122@gmail.com>

  • 相关阅读:
    忘记IBM服务器的登录IP
    分层思想
    防火墙的发展历史
    存储相关
    HCIE_交换篇_ARP欺骗
    堡垒机与网闸
    防止ARP欺骗
    信息安全等级保护
    DPM如何创建存储池?
    Lync2013的会话
  • 原文地址:https://www.cnblogs.com/xueyang/p/bare_machine.html
Copyright © 2020-2023  润新知