pcDuino第一个裸板程序uart0(3)

void uart_init(void);
char uart_getchar(void);
void uart_putchar(char c);

基本上参考A10的手册写就没问题,设置115200 8 n 1。接下来还写个lib.c,先写一个putchar(),以后再扩展

文件lib.c:

int putchar(int c)
{
if (c == '\n') /* 如果程序里面为\n */
uart_putchar('\r'); /* 则在终端里面回车,换行 */
uart_putchar(c);
return 0;
}

文件lib.h:

int putchar(int c);

程序代码部分就写完了,接下来写个简单点的Makefile

文件Makefile:

uart.bin:start.S main.c uart.c clock.c lib.c
arm-none-linux-gnueabi-gcc -nostdlib -c start.S -o start.o
arm-none-linux-gnueabi-gcc -nostdlib -c main.c -o main.o
arm-none-linux-gnueabi-gcc -nostdlib -c uart.c -o uart.o
arm-none-linux-gnueabi-gcc -nostdlib -c lib.c -o lib.o
arm-none-linux-gnueabi-gcc -nostdlib -c clock.c -o clock.o
arm-none-linux-gnueabi-ld -Ttext 0xD0020010 start.o main.o uart.o lib.o clock.o  -o uart_elf
arm-none-linux-gnueabi-objcopy -O binary -S uart_elf uart.bin
clean:
rm -rf *.o *.bin uart_elf *.dis

这个arm-none-linux-gnueabi-gcc是我的默认编译器,根据自己编译器器修改吧

接下来make就OK了,顺利的话最终会生成二进制文件uart.bin,这里的uart.bin还不能直接使用,需要根据A10内部固化BROM添加头部。这里需要一个工具,以后再分析工具源码,先用再说

./mksunxiboot uart.bin uarts.bin

生成的uarts.bin,就可以烧到tf卡,直接在板子上运行,写tf卡Ubuntu命令如下:

sudo dd if=/dev/zero of=/dev/sdb bs=1M count=1

sudo dd if=work/programe/A10/1_uart0/uarts.bin of=/dev/sdb bs=1024 seek=8

我的tf卡设备是/dev/sdb,uarts.bin路径work/programe/A10/1_uart0/uarts.bin,根据自己情况修改

再取下tf卡,放到pcDuino,打开串口设置115200 8 n 1 没有Flow Control,就可以跑起来了。

可以一起讨论,有些启动问题会在以后介绍。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/faaafd36e446afedd62fa2f17de6949c.html