1、检查串口有没有正确设置,如波特率、校验位和流控制。
2、程序中是否有对串口正确初始化?如果有BootLoader,这一工作应该由BootLoader来完成,则需检查BootLoader,或者可能根本就没有BootLoader,而你的程序也没有对串口进行初始化,当然就不会有输出了
bootloader是启动代码,裸机跑程序时bootloader指的就是2410init.s,有u-boot或其他bootloader时2410init.s只是bootloader的一部分。它的功能是:初始化中断向量表,初始化堆栈,初始化工作模式,如果代码是烧在ROM上的,还负责把代码搬到RAM上,跳转到main。网上有详细解释2410init.s文件的文章,自己去看一看。
在不跑操作系统时,也是要bootloader的,上面一段已经粗略提了一下它的功能,无操作系统时也需要它。
用不用交叉编译器跟有没有bootloader,没有什么必然联系,无论你在windows的ADS上或者是linux下开发ARM的程序,反正你一编译,就是交叉编译,只是在windows下ADS这些IDE会为你解决这一问题,你要做的只是按一下编译那个图标,而linux下要自己键入arm-linux-gcc而已。
如果开发板预装的u-boot没有了,那你建立工程文件的时候,你2410init.s这些文件,就不能省了,因为要靠它们来引导程序。如果有u-boot或其他bootloader,那你只要交叉编译出一个可执行文件,通过u-boot烧进板子,烧在RAM就go一下,烧在flash就boot,就OK了。
回到串口的问题,如果你真发现有对串口初始化,那就检查下是否正确初始化,或者端口正不正确。
无操作系统的情况下,除非你在程序里用UART,否则串口就应该是没输出的,因为你没有让它有输出!
串口没接好,换个端口试试
波特率对吗