汇编通用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. jmeter 插件下载下载方法

    1.进入下载插件网页:https://jmeter-plugins.org/install/Install/ 下载plugin-manager.jar 并放在jmeter 的lib/ext文件夹下 2 ...

  2. 自适应滤波:维纳滤波器——LCMV及MVDR实现

    作者:桂. 时间:2017-03-24  06:52:36 链接:http://www.cnblogs.com/xingshansi/p/6609317.html 声明:欢迎被转载,不过记得注明出处哦 ...

  3. MySql(十九):基础——自定义存储过程和函数

    MYSQL中创建存储过程和函数分别使用CREATE PROCEDURE和CREATE FUNCTION 使用CALL语句来调用存储过程,存储过程也可以调用其他存储过程 函数可以从语句外调用,能返回标量 ...

  4. MySQL与Oracle之间互相拷贝数据的Java程序

    因为工作需要,先是需要将一个小型的MySQL数据库中的数据拷贝到Oracle中:近期又有需要将一个中型的Oracle数据库拷贝到MySQL中.曾经找过网上各种转换工具,大多收费的,自己写个吧,还一切可 ...

  5. jQuery学习笔记(jquery.validate插件)

    jquery.validate官网地址:http://jqueryvalidation.org/ 1. 导入JavaScript库 <script src="../js/jquery. ...

  6. 2012版辅助开发工具包(ADT)新功能特性介绍及安装使用

    原文链接:http://android.eoe.cn/topic/android_sdk 2012年的Android辅助设备开发工具包(ADK)是Android开放设备协议(AOA)设备的最新参考实现 ...

  7. 如何打包和生成你的Android应用程序

    原文:http://android.eoe.cn/topic/android_sdk 在生成过程中,你的Android项目的编译和打包成一个apk文件,为您的应用程序二进制的容器.它包含了所有必要的信 ...

  8. cocos2d-x 模态对话框的实现

    心情不好,恩.不扯淡了.直接讲. ================================== 在泰然看了一篇实现模态对话框的文章,写的还不错,然后在其基础上加了我简单加了一层灰色透明背景,这 ...

  9. GMap.net控件学习记录

    主要参考网址 http://www.cnblogs.com/luxiaoxun/p/3802559.html http://www.cnblogs.com/luxiaoxun/p/3463250.ht ...

  10. create-react-app的使用及原理分析

    create-react-app 是一个全局的命令行工具用来创建一个新的项目 react-scripts 是一个生成的项目所需要的开发依赖 一般我们开始创建react web应用程序的时候,要自己通过 ...