ffxz 发表于 2010-3-9 09:25:52

[公告]rt_kprintf输出对象的更改

因为这个涉及到rt_kprintf输出的更改,并且涉及到系统对外的API更改,所以这里还是发一个公告:

svn版本已经把rt_kprintf输出到一个_console_device了,原来rt_kprintf依赖于rt_hw_console_output(const char* str)的函数,所以造成每次编写串口驱动都需要写两遍(输出部分),一个是串口本身的驱动,一个是rt_kprintf用的rt_hw_console_output函数实现。

这本身是对串口设备代码的重复编写,是无意义的编写,而且造成了rt_kprintf不容易定向到其他设备。

新的实现需要使用rt_console_set_device(const char* device_name)函数为console,即rt_kprintf指定一个输出设备。如果是串口,建议最好这个设备是STREAM | CHAR类型的(STREAM类型的设备会在输出'\n'前面自动插入一个'\r'字符)。这样修改后,建议在rt_hw_board_init(板级初始化)时先注册uart设备,然后通过rt_console_set_device("uart")的形式设置console的设备(名字:uart,可以根据前面注册的设备名指定成其他名字)。

对当前分支(0.3.x)的影响:
无 (仅限于armcc,gcc,iar编译器)

0.3.x中包含一个符号弱化的rt_hw_console_output函数,如果实现了自己的rt_hw_console_output函数,将自动覆盖符号弱化的rt_hw_console_output函数。0.4.0版本后,将完全取消rt_hw_console_output函数。
页: [1]
查看完整版本: [公告]rt_kprintf输出对象的更改