我自己编写了一个SCI协议库,使用BOOTLOAD加载到FLASH里,固定的FLASH地址,想在APP程序里也使用该LIB程序,但想节省空间不想重复下载到FLASH里,在CMD配置写如下代码:
SCI_Protocol:
{
SCI_PROTOCOL.lib(.text)
} LOAD = BOOTLOAD_SCI,
RUN = RAML0,
LOAD_START(_SCI_PROTOCOL_LoadStart),
LOAD_END(_SCI_PROTOCOL_LoadEnd),
RUN_START(_SCI_PROTOCOL_RunStart),
PAGE = 0,
TYPE = NOLOAD
可以正常的初始化,但是在BOOTLOAD可以正常的通信,在APP里不能够正常通信,使用在线仿真工具查看,发现LIB库的相关变量的地址不对,以及使用赋值语句,但是查看变量值未改变?这个原因是什么呢?可否解决一下?
Young Hu:SCI_PROTOCOL.lib
这里面有全局变量么?您可以生成symbol library去在APP中调用,将symbol和地址对应起来。
还有个思路是,在APP中也定义一个变量,使用绝对地址定义的方式去调用。
我自己编写了一个SCI协议库,使用BOOTLOAD加载到FLASH里,固定的FLASH地址,想在APP程序里也使用该LIB程序,但想节省空间不想重复下载到FLASH里,在CMD配置写如下代码:
SCI_Protocol:
{
SCI_PROTOCOL.lib(.text)
} LOAD = BOOTLOAD_SCI,
RUN = RAML0,
LOAD_START(_SCI_PROTOCOL_LoadStart),
LOAD_END(_SCI_PROTOCOL_LoadEnd),
RUN_START(_SCI_PROTOCOL_RunStart),
PAGE = 0,
TYPE = NOLOAD
可以正常的初始化,但是在BOOTLOAD可以正常的通信,在APP里不能够正常通信,使用在线仿真工具查看,发现LIB库的相关变量的地址不对,以及使用赋值语句,但是查看变量值未改变?这个原因是什么呢?可否解决一下?
mengsheng WU:
回复 Young Hu:
里面有全局变量的,但是仅在SCI_PROTOCOL.lib内部使用,不对外开放的,symbol library是如何生成,有相关文档吗?
我自己编写了一个SCI协议库,使用BOOTLOAD加载到FLASH里,固定的FLASH地址,想在APP程序里也使用该LIB程序,但想节省空间不想重复下载到FLASH里,在CMD配置写如下代码:
SCI_Protocol:
{
SCI_PROTOCOL.lib(.text)
} LOAD = BOOTLOAD_SCI,
RUN = RAML0,
LOAD_START(_SCI_PROTOCOL_LoadStart),
LOAD_END(_SCI_PROTOCOL_LoadEnd),
RUN_START(_SCI_PROTOCOL_RunStart),
PAGE = 0,
TYPE = NOLOAD
可以正常的初始化,但是在BOOTLOAD可以正常的通信,在APP里不能够正常通信,使用在线仿真工具查看,发现LIB库的相关变量的地址不对,以及使用赋值语句,但是查看变量值未改变?这个原因是什么呢?可否解决一下?
mengsheng WU:
回复 Young Hu:
我还想问一个问题,我如何得到程序所以的全局变量所分配的地址?有相关的途径吗?我去解析MAP文件,里面内容太多?
我自己编写了一个SCI协议库,使用BOOTLOAD加载到FLASH里,固定的FLASH地址,想在APP程序里也使用该LIB程序,但想节省空间不想重复下载到FLASH里,在CMD配置写如下代码:
SCI_Protocol:
{
SCI_PROTOCOL.lib(.text)
} LOAD = BOOTLOAD_SCI,
RUN = RAML0,
LOAD_START(_SCI_PROTOCOL_LoadStart),
LOAD_END(_SCI_PROTOCOL_LoadEnd),
RUN_START(_SCI_PROTOCOL_RunStart),
PAGE = 0,
TYPE = NOLOAD
可以正常的初始化,但是在BOOTLOAD可以正常的通信,在APP里不能够正常通信,使用在线仿真工具查看,发现LIB库的相关变量的地址不对,以及使用赋值语句,但是查看变量值未改变?这个原因是什么呢?可否解决一下?
Young Hu:
回复 mengsheng WU:
比较简单的方法就是解析map文件,根据函数或者变量名搜索即可