修改UART驱动程序(UART_HANDLER_FUNC)

了解更多常见问题解答教程

4个帖子/ 0新
最后一篇
Mapart.
离线
最后一次露面:2天4小时前
加入:2018-11-30 15:58
修改UART驱动程序(UART_HANDLER_FUNC)

你好,

我想使用UART接口吐出NMEA数据的GNSS,并为了实现这一点,我想修改UART驱动程序。

我导入了将(以及其他函数)UART_HANDLER_FUNC中的定义(基于BLE_APP_SECURY)的文件(基于BLE_APP_SECURY),并且在尝试编译时,我会收到以下错误:

。\ out_585 \ ble_app_security_585.axf:错误:l6200e:符号UART_HANDLER_FUNC乘以定义(由DA14585_SYMBOLS.txt和UART_EA.O)。。\ out_585 \ ble_app_security_585.axf:错误:l6200e:符号UART_FINISH_TRANSFERS_FUNC乘以(由DA14585_SYMBOLS.TXT和UART_EA.O)。。\ out_585 \ ble_app_security_585.axf:错误:l6200e:symbol uart_flow_off_func乘以定义(由da14585_symbols.txt和uart_ea.o)。。\ out_585 \ ble_app_security_585.axf:错误:l6200e:符号UART_FLOW_ON_FUNC乘以定义(由DA14585_SYMBOLS.TXT和UART_EA.O)。。\ out_585 \ ble_app_security_585.axf:错误:l6200e:符号UART_INIT_FUNC乘以定义(由da14585_symbols.txt和uart_ea.o)。。\ out_585 \ ble_app_security_585.axf:错误:l6200e:符号UART_READ_FUNC乘以定义(由DA14585_SYMBOLS.txt和UART_EA.O)。。\ out_585 \ ble_app_security_585.axf:错误:l6200e:符号UART_WRITE_FUNC乘法(由DA14585_SYMBOLS.txt和UART_EA.O)。。\ out_585 \ ble_app_security_585.axf:错误:l6200e:符号UART_SET_FLOW_OFF_RETRIES_LIMIT乘法(由DA14585_SYMBOLS.TXT和UART_EA.O)。。\ out_585 \ ble_app_security_585.axf:错误:l6200e:符号UART_ENV乘法定义(由da14585_symbols.txt和uart_ea.o)。

为什么在da14585_symbols.txt中定义了这些函数?
如何以最简单的方式修改驱动程序?

最好的祝福

马丁

设备:
PM_DIALOG.
离线
最后一次露面:27分18秒前
职员
加入:2018-02-08 11:03
嗨Mapart,

嗨Mapart,

这是一个错误,形成链接器,因为所有功能都由ROM代码执行。我不建议您修改UART驱动程序,但如果您想这样做,您应该覆盖来自ROM代码的函数。例如,如果您希望拥有自己的UART_FINISH_TRANSFERS_FUNC(),则应执行以下修改:

  • 在da14585_symbols.txt文件下,该文件在SDK \ common_project_files \ misc sdk路径下,注释出来。你应该使用<<;>>这个范围的符号..

  • 从user_config_defs.h和hump_table.c中注释出此函数。在Jump_Table.cn中,您应该从函数的引用和rom_func_addr_table_var []注释出来。

您应该按照此过程进行您使用的所有功能。

谢谢,PM_DIALOG.

Mapart.
离线
最后一次露面:2天4小时前
加入:2018-11-30 15:58
你好,

你好,

感谢您的回答!

只是为了确保我理解这一点:

  • UART驱动程序(对于UART1)将在制造期间预先编译并将其写入ROM
  • 预编译驱动程序的源代码是uart.c
  • da14585_symbols.txt包含ROM的符号

这样对吗?
然后我还有一个问题:

同时拥有“UART_INIT_FUNC”和“UART_INIT”,“UART_HANDLER_FUND”和“UART_HANDLER”,et.c.?

最好的祝福

马丁

PM_DIALOG.
离线
最后一次露面:27分18秒前
职员
加入:2018-02-08 11:03
嗨Mapart,

嗨Mapart,

是的,你是对的!目的是覆盖ROM函数并使用您的自定义UART_INIT_FUNC等。正如我之前的帖子中提到的那样,此错误来自链接器,因为所有功能都由ROM代码执行。如果您发现任何答案有用,请将其标记为已接受。

谢谢,PM_DIALOG.