主题中讨论的其他器件:UNIFLASH、 RM46L852、 HALCOGEN
在 Linux 上、我安装了 UniFlash 和 ARM-none-eabi-gcc。 我一直在努力、但没有成功地提供一种使用 sci 在串行终端上提示输入的方法、这与 Launchpad Project_1示例的工作方式类似:
void sciDisplayText (sciBASE-t * sci、uint8 *文本、uint32长度);
请参阅 :/Launchpad/RM/RM46L8/Project_1中的 git.ti.com/.../master 我使用的是 ARM-none-eabi-gcc --version:
arm-none-eabi-gcc (用于 Arm 嵌入式处理器8-2019-Q3-update 的 GNU 工具) 8.3.1 20190703 (版本)[gcc-8分支版本273027]
(我在另一个方框上还有 arm-none-eabi-gcc (Arch Repository) 9.2.0 -相同的结果)
我正在使用以下源代码,并为...Init()函数构建所有必需的源代码:
#include
#include "Application_Types.h"
#include "sys_selftest.h"
#include "sci.h"
#include "Gio.h"
#include "rti.h"
#include "het.h"
#include "adc.h"
extern void sciDisplayText (sciBASE-t * sci、uint8 *文本、uint32长度);
Button User1 =无、User2 =无;
uint32 g_PotReading = 468750;
int main (void){
char *s ="Hello World!\r\n";
gioInit();
hetInit();
adcInit();
adcCalibration (adcREG1);
rtiInit();
sciInit();
mibspiInit();
mibspiREG3->PC0 &= 0xFFE;//CS0为 GIO
mibspiREG3->PC1 &= 0x6FE;//CS0为输入
mibspiREG3->PC8 |= 0x1; //上拉 CS0
sciDisplayText (scilinREG,(uint8*)s, 105);
sciDisplayText (scilinREG、(uint8*)"全部完成...\r\n"、105);
返回0;
}
(我一开始只使用 sciInit(),然后添加了额外的...Init()函数,以防包含必要的定义以阻止打印,而编译器或链接器不会标记这些定义)
我使用以下编译字符串:
arm-none-eabi-gcc -March =armv7-r --specs=nosys.specs --specs=nan.specs -o hello.out hello.c sci.c mibspi.c rti.c sys_vim.c ESM.c sys_phantome.c support_functions.c notification.c sys_dma.c gc.c gio -c gc.c rc.c rc.c rma.c rc.c
代码已成功编译为可执行文件:
$文件 hello.out
hello.out:ELF 32位 LSB 可执行文件、ARM、EABI 版本1 (SYSV)、静态链接、未剥离
闪存成功而不会出现问题:
$./dslite.sh -c ~/doc/arm/ti_rm46x/RM46L852.ccxml -e /home/david/dev/src-c/tmp/arm/prj01/hello.out
执行以下命令:
>/opt/ti/uniflash_5.1.0/deskdb/content/TICloudAgent/linux/ccs_base/DebugServer/bin/DSLite flash -c /home/david/doc/arm/ti_rm46x/RM46L852.ccxml -e /home/david/dev/src-c/tmp/arm/prj01/hello.out
有关更多详细信息和示例、请参阅《UniFlash 快速入门指南》。
DSLite 版本9.2.0.1723
正在配置调试器(首次启动可能需要几分钟时间)...
正在初始化寄存器数据库...
正在初始化:IcePick
执行启动脚本:IcePick
正在初始化:DAP
执行启动脚本:DAP
正在初始化:CortexR4
执行启动脚本:CortexR4
正在连接...
CortexR4:GEL 输出: 闪存的存储器映射设置@地址0x0Loading 程序:/home/david/dev/src-c/tmp/arm/prj01/hello.out
正在准备...
CortexR4:GEL 输出: 由于系统复位、闪存@地址0x0的存储器映射设置
.text:0x94处66556的0
正在擦除闪存
擦除组0、扇区0
擦除组0、扇区1:4%
擦除组0、扇区2:9%
擦除组0、扇区3:13%
擦除组0、扇区4:18%
擦除组0、扇区5:22%
擦除组0、扇区6:27%
擦除组0、扇区7:31%
擦除组0、扇区8:36%
擦除组0、扇区9:40%
擦除组0、扇区10:45%
擦除组0、扇区11:50%
擦除组0、扇区12:54%
擦除组0、扇区13:59%
擦除组0、扇区14:63%
擦除组0、扇区15:68%
擦除组7、扇区0:77%
擦除组7、扇区1:81%
擦除组7、扇区2:86%
擦除组7、扇区3:90%
.text:32748 of 66556 at 0x94:48%
.text:65500 of 66556 at 0x94:96%
.data:0 of 1052 at 0x20490:98%
完成:98%
CortexR4:GEL 输出: 由于系统复位、闪存@地址0x0的存储器映射设置
将 PC 设置为入口点:98%
正在运行...
成功
但是、当通过串行控制台(使用通信参数19200 N82连接到/dev/ttyACM0)连接时、不会产生输出。 刷写 project1_RM46x.out 可执行文件、立即恢复控制台输出)。 所以我被骗了。 我已经查看了源文件和头文件,以确保我的示例以相同的方式接近控制台输出-- 实际上、使用相同的代码、但我必须在编译或链接过程中缺少一些基本内容、这样生成的可执行文件不会提供与 Project_1示例相同的串行输出。
我愿意接受所有建议、但我看不到 CCS 将会执行什么操作、从而导致一个输出为 arm-none-eabi-gcc 和 ld 的正常 Project _1。 如果有任何帮助,将不胜感激。 我已在 TI.com 上浏览过示例和文档、但未找到缺失的部分。