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,就可以跑起来了。
可以一起讨论,有些启动问题会在以后介绍。