ARM9裸机的UART程序测试
2014-06-06 20:31
369 查看
既然是在裸机上跑程序,就一定需要一段汇编语言去初始化硬件,然后用C语言写串口初始化程序。
因为ARM一上电就从地址0x0处运行程序,所以我们把程序烧到FLASH里去运行,这样在板子重启后程序也不会消失。
以下程序都是在Linux下完成的。
第一个程序汇编start.S:
第二个程序uart.c:
最后我们需要一个二进制uart.bin,使用Makefile文件完成:
输入make命令就可以得到uart.bin文件。这个二进制文件可以通过串口或者并口下载到FLASH中。下在完成后,重启板子即可来收到串口信息:hello.
阅读(1581) | 评论(0) | 转发(0) |
0
上一篇:ARM汇编实验-工作模式
下一篇:linux静态库和动态库分析
相关热门文章
oc总结
Linux设备驱动程序
使用Linux命令行测试网速...
Android对Linux内核的增强- lo...
浅析armlinux2.4.19启动程序[h...
shell中字符串操作
shell中的特殊字符
stagefright与opencore对比
linux守护进程的几个关键地方...
Android常用的一些make命令...
初学UNIX环境高级编程的,关于...
chinaunix博客什么时候可以设...
一个访问量较大网站的服务器。...
收音机驱动与v4l2架构的关系,...
如何将linux驱动改为裸机驱动(...
给主人留下些什么吧!~~
评论热议
因为ARM一上电就从地址0x0处运行程序,所以我们把程序烧到FLASH里去运行,这样在板子重启后程序也不会消失。
以下程序都是在Linux下完成的。
第一个程序汇编start.S:
.text .globl _start _start: /*关闭看门狗*/ ldr r0, =0x400040BC /*0x00000000*/ mov r1, #0 /*0x00000004*/ str r1, [r0] /*0x00000008*/ /*设置堆栈4K,这里要看可用的内存有多大,设置的栈不能大于可用的内存,我的这块板子可用内存最大16K*/ ldr sp, =1024*4 /*0x00000010*/ bl main /*0x00000014*/ halt_loop: b halt_loop /*0x00000018*/ |
#include "config3200.h" //寄存器地址的宏定义 #define DLM 0 #define DLL 1 volatile uint32 Snd_N = 0; void UART5_SendByte(uint8 data) { U5THR = data; while(U5LSR & 0x40 == 0); } void UART5_SendBuf(uint8 const *RcvBufPt, uint32 Snd_N) { uint32 i = 0; for(i = 0; i < Snd_N; i++){ UART5_SendByte( *RcvBufPt++ ); } } void UART5_Init(void) { /* * 设置波特率 */ U5LCR = 0x83; /* 使能波特率分频器锁存的访问 */ U5DLM = DLM; /* 给分频器赋值,这里赋值为1 */ U5DLL = DLL; U5LCR = 0x03; /* 使能THR,RBR,IER寄存器 */ U5CLK = (134 << 0) | (19 << 8); /* 设置小数分频器为X/Y=19/134 */ U5FCR = 0x3F; /* 使能FIFO,并设置FIFO触发深度 */ UART_CLKMODE = 0x0200; /* 选择UART5的时钟模式 */ } int main(void) { uint32 i = 0; UART5_Init(); while (1) { UART5_SendBuf("hello ", 6); while (i++ < 10000); i = 0; } return 0; } /********************************************************************************************************* END FILE *********************************************************************************************************/ |
uart.bin: start.S uart.c arm-vfp-linux-gnu-gcc -c -o start.o start.S arm-vfp-linux-gnu-gcc -c -o uart.o uart.c arm-vfp-linux-gnu-ld -Ttext 0x00000000 start.o uart.o -o uart_elf arm-vfp-linux-gnu-objcopy -O binary -S uart_elf uart.bin clean: rm *.bin *.o uart_elf |
阅读(1581) | 评论(0) | 转发(0) |
0
上一篇:ARM汇编实验-工作模式
下一篇:linux静态库和动态库分析
相关热门文章
oc总结
Linux设备驱动程序
使用Linux命令行测试网速...
Android对Linux内核的增强- lo...
浅析armlinux2.4.19启动程序[h...
shell中字符串操作
shell中的特殊字符
stagefright与opencore对比
linux守护进程的几个关键地方...
Android常用的一些make命令...
初学UNIX环境高级编程的,关于...
chinaunix博客什么时候可以设...
一个访问量较大网站的服务器。...
收音机驱动与v4l2架构的关系,...
如何将linux驱动改为裸机驱动(...
给主人留下些什么吧!~~
评论热议
相关文章推荐
- TQ2440裸奔程序>>串口UART的PC机按键测试程序
- Mini 2440 LED、按键和蜂鸣器裸机测试程序(C语言)
- UART端口测试方法及测试程序
- ARM9 mini2451裸机学习——UART驱动学习和整理
- TQ2440裸奔程序:串口UART打印printf测试程序
- 三 ARM9(S3C2440)的串口UART——程序实例讲解
- 001_<ARM9从裸机到Linux操作系统>____裸机篇____ARM9裸机程序开发环境搭建
- TX2440裸机程序-uart
- Linux下UART串口的测试小程序
- FriendlyARM UART裸机程序源码
- 八、mini2440裸机程序之UART(1)简单介绍
- OK6410 uart 简单测试程序
- A10 A20 UART测试程序
- 实现测试2440裸机汇编程序
- TQ2440裸奔程序>>串口UART打印printf测试程序
- uart串口发送---那些年我们一起玩mini2440(arm9)裸机
- mini2440裸机程序测试第一部-LED
- 八、mini2440裸机程序之UART(2)UART0与PC串口通信【转】
- linux下UART的应用层编程及测试小程序
- ARM裸机程序开发21(2440串口:申嵌源码2440lib.c文件中关于UART的操作)