汇编通用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的更多相关文章

  1. 嵌入式 vlc从接收到数据流到播放视频的过程分析(经典)

    个人整理: Vlc流播放流程 vlc源码目录树: 目录名称 说明 bindings Java, CIL 和Python绑定 doc 帮助文档 (不是更新的) extras 另叙. include VL ...

  2. 【Linux系列汇总】小白博主的嵌入式Linux实战快速进阶之路(持续更新)

    我把之前在学习嵌入式Linux和工作中遇到问题和相关经验等,一起整理到这里,方便自己查阅和学习,温故而知新,如果能帮助到您,请帮忙点个赞: 本文的宗旨 嵌入式Linux 的项目通常需要一个团队来开发, ...

  3. 嵌入式Linux设备驱动程序:编写内核设备驱动程序

    嵌入式Linux设备驱动程序:编写内核设备驱动程序 Embedded Linux device drivers: Writing a kernel device driver 编写内核设备驱动程序 最 ...

  4. 嵌入式开发中常见3个的C语言技巧

    Hey,大家好!我是CrazyCatJack.今天我来说几个在嵌入式开发中常用的C语言技巧吧.也许你曾经用过,也许你只是见到过但是没有深入理解.那么今天好好补充下吧^_^ 1.指向函数的指针 指针不光 ...

  5. 嵌入式服务器jetty,让你更快开发web

    概述 jetty是什么? jetty是轻量级的web服务器和servlet引擎. 它的最大特点是:可以很方便的作为嵌入式服务器. 它是eclipse的一个开源项目.不用怀疑,就是你常用的那个eclip ...

  6. 一个C++版的嵌入式操作系统

     原创文章,转载请注明出处! 现世面上流传着很多嵌入式操作系统,都已经非常优秀,但本人(Sam的博客-博客园)还是自己编写了一个RTOS,不敢说优秀,但绝对是使用起来最简单的.先看一个工程截图与一段m ...

  7. neo4j-jersey分嵌入式和服务式连接图形数据库

    原文载自:http://blog.csdn.net/yidian815/article/details/12887259 嵌入式: 引入neo4j依赖 <dependency> <g ...

  8. 嵌入式 Linux下永久生效环境变量bashrc

    嵌入式 Linux下永久生效环境变量bashrc 1) .bashrc文件 在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到 ...

  9. Jetty+Xfire 嵌入式webService应用实践

    1:使用场景:Mock公安网证件信息校验 2:Jetty嵌入式Server启动方式:由于Jetty9.x(需jdk7.x以上)以后Server启动方式有略微差异,所以分开说明: 2.1 Jetty9. ...

随机推荐

  1. 五分钟读懂UML类图(转)

    平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类 ...

  2. 使用layui 和 jquery 问题小结

    问题 1 在使用 layui 2.2.5 之前,可以引入最新版的 jquery ,使用更好的性能.也可以使用layui 的jquery内部版本.如果引入要在引入layui.js 之前引入 2 使用 s ...

  3. RocketMQ最佳实践(一)4.0版本/概念介绍/安装调试/客户端demo

    为什么选择RocketMQ 我们来看看官方回答: “我们研究发现,对于ActiveMQ而言,随着越来越多的使用queues和topics,其IO成为了瓶颈.某些情况下,消费者缓慢(消费能力不足)还会拖 ...

  4. DCOS中监控和弹性伸缩方案经验

    监控的选型 我们的DCOS 主要是面向2种业务形态:互联网应用,NFV组件和相关的数据库.2种不同的业务虽然说都是跑在容器内部,但是其实需要监控的信息和指标都是各不相同.因此在选择监控方案的时候我们更 ...

  5. /etc/sudoers文件设置为允许用户在不输入该用户的密码的情况下使用所有命令

    设置用户666在不输入该用户的密码的情况下使用所有命令: /etc/sudoers ALL=(ALL) NOPASSWD:ALL # ALL=(ALL) ALL #sudo su - 时是需要输入66 ...

  6. (转载)javascript将base64编码的图片数据转换为file并提交

    /** * @param base64Codes * 图片的base64编码 */ function sumitImageFile(base64Codes){ var form=document.fo ...

  7. angular中的表单数据自定义验证

    之前说过了angular是如何给表单的数据进行基本的,常用的验证的:angular学习笔记(二十)-表单验证 但是在实际工作中,这些验证是远远不够的,很多时候我们需要自定义一些验证规则,以及一些异步, ...

  8. win2008r2的iis7.5手动建站方法,iis7.5中用独立用户建立网站的方法,提高网站安全性

    win2003的iis6手动建站方法,iis6中用独立用户建立网站的方法,提高网站安全性,我们前面的教程有说明,请看http://www.piis.cn/zhishi/web574.asp 现在我们说 ...

  9. [SQL in Azure] Configure a VNet to VNet Connection

    http://msdn.microsoft.com/en-us/library/azure/dn690122.aspx Configure a VNet to VNet Connection 2 ou ...

  10. 每日英语:U.S. Media Firms Stymied in China

    China's recent clampdown on foreign media is crimping the expansion plans of Western news organizati ...