linux点灯在汇编版中说明了硬件中点灯的原理,C语言中不再陈述,说白了就是控制GPXCONGPXDTA寄存器就行了,芯片是S3C2440A芯片,查看芯片手册就能懂了,其他芯片也是一样的。C语言版就只说明了程序,共三个。LED.c是主程序运行的,start.s是汇编启动文件,makefile是编译时候为了快捷的编译(这个以后再说)。当然,这里只说明了如何编写C的运行程序,具体编译之后生成什么样的文件,里面是什么东西就没必要说明了,可以去了解一下,编译之后生成反汇编码,然后生成机器码文件,C语言的程序具体还是会生成机器码才能运行,中间过程就不说了,这个涉及的范围有点广了。

一: 简单C语言点灯:

需要建立三个文件:

Led.c文件

Start.S文件

Makefile文件

 

解析led.c文件,由汇编指令中进一步进行C语言的开发,汇编编程只是为了了解内部如何进行的,C语言能够快速的开发,废话不多说,解析C文件

int main()

{

unsigned int *pGPFCON = (unsigned int *)0x56000050;

unsigned int *pGPFDAT = (unsigned int *)0x56000054;

*pGPFCON = 0x100;

*pGPFDAT = 0;

return 0;

}

 

解析Start.S文件

.text

.global _start

_start:

ldr sp, =4096

//  ldr sp, =0x40000000+4096

bl main

halt:

b halt

Makefile文件

这个指令后面再讲:

all:

arm-linux-gcc -c -o led.o led.c

arm-linux-gcc -c -o start.o start.S

arm-linux-ld -Ttext 0 start.o led.o -o led.elf

arm-linux-objcopy -O binary -S led.elf led.bin

arm-linux-objdump -D led.elf > led.dis

clean:

rm *.bin *.o *.elf *.dis

003_linux之点灯(C语言版)的更多相关文章

  1. libnode 0.4.0 发布,C++ 语言版的 Node.js

    libnode 0.4.0 支持 Windows ,提升了性能,libuv 更新到 0.10.17 版本,libj 更新到 0.8.2 版本. libnode 是 C++ 语言版的 Node.js,和 ...

  2. md5加密算法c语言版

    from: http://blog.sina.com.cn/s/blog_693de6100101kcu6.html 注:以下是md5加密算法c语言版(16/32位) ---------------- ...

  3. 基于gSOAP使用头文件的C语言版web service开发过程例子

    基于gSOAP使用头文件的C语言版web service开发过程例子 一服务端 1 打开VS2005,创建一个工程,命名为calcServer. 2 添加一个头文件calc.h,编辑内容如下: 1// ...

  4. Windows 8.1 with Update 镜像下载(增OEM单语言版)

    该系统已有更新的版本,请转至<Windows 8.1 with update 官方最新镜像汇总>下载. 2014年4月9日凌晨,微软向MSDN订阅用户开放了Windows 8.1 with ...

  5. 数据结构C语言版 有向图的十字链表存储表示和实现

    /*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...

  6. 数据结构C语言版 表插入排序 静态表

    数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./*  数据结构C语言版 表插入排序  算法10.3 P267-P270  编译 ...

  7. 数据结构C语言版 弗洛伊德算法实现

    /* 数据结构C语言版 弗洛伊德算法  P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...

  8. VS2015如何新建C++或者C语言版的lib文件

    当我们不想公开我们的代码的时候,可以把我们的代码封装成静态数据连接库,即lib文件.下面介绍下如何生成lib文件. 以VS2015为例,一种是C++版的lib文件,一种是C语言版的lib文件. 一.按 ...

  9. hbase rest api接口链接管理【golang语言版】

    # go-hbase-resthbase rest api接口链接管理[golang语言版]关于hbase的rest接口的详细信息可以到官网查看[http://hbase.apache.org/boo ...

随机推荐

  1. 笔记-9:使用random库生成随机数

    random:主要目的是生成随机数 函数 说明 seed(a=None) 初始化随机数,默认值为当前系统时间 random() 生成一个[0.0,1.0)之间的随机数小数 randint(a,b) 生 ...

  2. MongoDB 聚合函数及排序

    聚合函数 最大值  $max db.mycol.aggregate([{$group : {_id : "$by_user", num_max : {$max: "$li ...

  3. Python基础 第5章 条件、循环及其他语句(1)

    1. print和import 1.1 打印多个参数 可用 + 连接多个字符串,可保证被连接字符串前无空格: 可用sep=“_”,自定义各种分隔符: print("I"," ...

  4. JVM 内存溢出详解(栈溢出,堆溢出,持久代溢出、无法创建本地线程)

    出处:  http://www.jianshu.com/p/cd705f88cf2a 1.内存溢出和内存泄漏的区别 内存溢出 (Out Of Memory):是指程序在申请内存时,没有足够的内存空间供 ...

  5. go 函数定义

    -------------------------------------------- package main import "fmt" func add(x int, y i ...

  6. 通过命令行新建qt项目,并编译打包

    ref: https://blog.csdn.net/weixin_42837024/article/details/81945656 平台 :Ubuntu 18.04 QT版本   :5.9.1 ( ...

  7. Comet OJ Contest #3

    A:签到. #include<bits/stdc++.h> using namespace std; #define ll long long #define inf 1000000010 ...

  8. 浅谈人脸识别中的loss 损失函数

    浅谈人脸识别中的loss 损失函数 2019-04-17 17:57:33 liguiyuan112 阅读数 641更多 分类专栏: AI 人脸识别   版权声明:本文为博主原创文章,遵循CC 4.0 ...

  9. ASM实例修改SYS密码

    修改ASM实例中SYS用户密码 How To Change ASM SYS PASSWORD ? (文档 ID 452076.1) Oracle Database - Enterprise Editi ...

  10. Linux 生成SSL证书 供 nginx使用

    首先执行如下命令生成一个key openssl genrsa -des3 -out ssl.key 1024 然后他会要求你输入这个key文件的密码.不推荐输入.因为以后要给nginx使用.每次rel ...