【嵌入式】——makefiles
汇编通用makefile:
命令行编辑:
编译
arm-linux-as -march=armv5te -o led.o led.s
-march 指定的指令集的版本 指定架构
连接
arm-linux-ld -nostartfiles -nostdlib -Ttext=0x20008000 -o led led.o
转换led成二进制文件
arm-linux-objcopy -O binary led led.bin
PROG=led
OBJS=led.o AS=arm-linux-as
LD=arm-linux-ld
OBJCOPY=arm-linux-objcopy
AFLAGS=-march=armv5te
LDFLAGS=-nostartfiles -nostdlib -Ttext=0x20008000 -e led //0x20008000 是内存地址 $(PROG): $(OBJS)
$(LD) $(LDFLAGS) -o $(PROG) $(OBJS)
$(OBJCOPY) -O binary $(PROG) $(PROG).bin %.o:%.s
$(AS) $(AFLAGS) -o $@ $< //$@ 表示所有目标文件 $< 表示所有依赖文件 clean:
@rm -vf $(OBJS) $(PROG) $(PROG).bin
C 通用makefile:
arm-linux-gcc -march=armv5te -nostdlib -c -o led_c.o led_c.c
arm-linux-ld -nostartfiles -nostdlib -Ttext=0x20008000 -e led_main -o led_c led_c.o
arm-linux-objcopy -O binary led_c led_c.bin
PROG=led_c
OBJS=led_c.o AS=arm-linux-as
CC=arm-linux-gcc
LD=arm-linux-ld
OBJCOPY=arm-linux-objcopy
AFLAGS=-march=armv5te
CFLAGS=-march=armv5te -nostdlib
LDFLAGS=-nostartfiles -nostdlib -Ttext=0x20008000 -e led_main $(PROG): $(OBJS)
$(LD) $(LDFLAGS) -o $(PROG) $(OBJS)
$(OBJCOPY) -O binary $(PROG) $(PROG).bin %.o:%.s
$(AS) $(AFLAGS) -o $@ $< %.o:%.c
$(CC) $(CFLAGS) -c -o $@ $<
clean:
@rm -vf $(OBJS) $(PROG) $(PROG).bin
使用C分别控制 key1按下点亮led1 key2按下点亮led2
#define GPC0CON (*(volatile unsigned long*)0xE0200060) //led
#define GPC0DAT (*(volatile unsigned long*)0xE0200064) #define GPH0CON (*(volatile unsigned long*)0xE0200C00) //key
#define GPH0DAT (*(volatile unsigned long*)0xE0200C04) #define GPC03OUT (1<<(3*4)) //GPC0 3 led1 15-12位 0001为输出引脚
#define GPC04OUT (1<<(4*4)) //GPC0 4 led2 19-16位 #define GPH00IN ~(0xF<<(4*0)) //GPH0 0 key1 3-0位 0000为输入引脚
#define GPH01IN ~(0xF<<(4*1)) //GPH0 1 key2 7-4位
int main(void){
//设置led1 2 GPC0CON 为输出引脚
GPC0CON = GPC03OUT | GPC04OUT;
//设置按键1 2 GPH0CON 为输出引脚
GPH0CON = GPH00IN & GPH01IN; while(){
if(GPH0DAT & 0x1){
GPC0DAT = 0x00;
}
else{
GPC0DAT = 0x08;
}
if(GPH0DAT & 0x02){
GPC0DAT = 0x00;
}
else{
GPC0DAT = 0x10;
}
}
}
补充:
简易C语言makefile
C = gcc CFLAGS = -c -Wall
OBJS=test.o hello.o hello:$(OBJS)
$(CC) $(OBJS) -o $@
rm -rf *.o %.o:%.c
$(CC) -c $(CFLAGS) $< clean:
rm -rf hello *.o
$<—— 用来构建目标所使用的源文件
$@—— 目标的完整名
【嵌入式】——makefiles的更多相关文章
- 嵌入式 vlc从接收到数据流到播放视频的过程分析(经典)
个人整理: Vlc流播放流程 vlc源码目录树: 目录名称 说明 bindings Java, CIL 和Python绑定 doc 帮助文档 (不是更新的) extras 另叙. include VL ...
- 【Linux系列汇总】小白博主的嵌入式Linux实战快速进阶之路(持续更新)
我把之前在学习嵌入式Linux和工作中遇到问题和相关经验等,一起整理到这里,方便自己查阅和学习,温故而知新,如果能帮助到您,请帮忙点个赞: 本文的宗旨 嵌入式Linux 的项目通常需要一个团队来开发, ...
- 嵌入式Linux设备驱动程序:编写内核设备驱动程序
嵌入式Linux设备驱动程序:编写内核设备驱动程序 Embedded Linux device drivers: Writing a kernel device driver 编写内核设备驱动程序 最 ...
- 嵌入式开发中常见3个的C语言技巧
Hey,大家好!我是CrazyCatJack.今天我来说几个在嵌入式开发中常用的C语言技巧吧.也许你曾经用过,也许你只是见到过但是没有深入理解.那么今天好好补充下吧^_^ 1.指向函数的指针 指针不光 ...
- 嵌入式服务器jetty,让你更快开发web
概述 jetty是什么? jetty是轻量级的web服务器和servlet引擎. 它的最大特点是:可以很方便的作为嵌入式服务器. 它是eclipse的一个开源项目.不用怀疑,就是你常用的那个eclip ...
- 一个C++版的嵌入式操作系统
原创文章,转载请注明出处! 现世面上流传着很多嵌入式操作系统,都已经非常优秀,但本人(Sam的博客-博客园)还是自己编写了一个RTOS,不敢说优秀,但绝对是使用起来最简单的.先看一个工程截图与一段m ...
- neo4j-jersey分嵌入式和服务式连接图形数据库
原文载自:http://blog.csdn.net/yidian815/article/details/12887259 嵌入式: 引入neo4j依赖 <dependency> <g ...
- 嵌入式 Linux下永久生效环境变量bashrc
嵌入式 Linux下永久生效环境变量bashrc 1) .bashrc文件 在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到 ...
- Jetty+Xfire 嵌入式webService应用实践
1:使用场景:Mock公安网证件信息校验 2:Jetty嵌入式Server启动方式:由于Jetty9.x(需jdk7.x以上)以后Server启动方式有略微差异,所以分开说明: 2.1 Jetty9. ...
随机推荐
- 个人用户使用genymotion 模拟器
genymotion android模拟器速度快,比较好用.对公司使用的是要收费的,但是对个人使用还是免费的,所以个人用户还可以继续使用.使用方法 1.注册账号,填写用户名.邮箱.密码.公司类型(选g ...
- pbr若干概念
pbr基于辐射传输理论,最基本的一个观点是:一切皆光源--任何一个面元既是光能接收器,也是光能发射器. 光通(flux):单位时间内通过某一面积的光能,单位W(瓦特),用表示. 可见,光通其实就是功率 ...
- 设计模式-单例模式(Singleton Pattren)(饿汉模式和懒汉模式)
单例模式(Singleton Pattren):确保一个类在整个应用中只有一个实例,并提供一个全局访问点. 实现要点: 1. 私有化构造方法 2. 类的实例在类初始化的时候创建 3. 提供一个类方法, ...
- 《图说VR入门》——DK2入门及其资源汇总
本文章由cartzhang编写,转载请注明出处. 全部权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/53174895 作者:car ...
- mongoose之findOneAndUpdate方法之代码示例
categoryModel.findOneAndUpdate({name:{$in:req.body.categorys}},{$inc:{total:1}},function(err){ if (e ...
- 【小白的CFD之旅】18 控制方程基础
忙碌了一个学期终于放暑假了,小白心情很愉快.然而想起CFD教材上的那些点缀着各种让人眼花缭乱符号的数学公式,整个人就不好了.不过这些事情小白也不好意思去麻烦师兄师姐们,还得靠自己去摸索.正好趁着暑假把 ...
- Flink源码分析
http://vinoyang.com/ http://wuchong.me Apache Flink源码解析之stream-source https://yq.aliyun.com/articles ...
- 每日英语:America The Vulgar
'What's celebrity sex, Dad?' It was my 7-year-old son, who had been looking over my shoulder at my c ...
- Lua string.gsub (s, pattern, repl [, n])
lua的string函数导出在string module中.在lua5.1,同时也作为string类型的成员方法,因此,我们既可以写成string.gsub (s,……), 也可以s:gsub(). ...
- Vue2键盘事件:keydown/keyup...
Vue2键盘事件:keydown/keyup... 1.使用 <!DOCTYPE html> <html> <head> <title></tit ...