TLE9893-2QKW62S新建Keil MDK工程
以下,记录从零开始创建一个全新的TLE9893-2QKW62S----Keil MDK工程:
选择“Project”–>“New uVision Project”:
弹出Run-Time Environment(也就是RTE)配置界面
关于RTE管理界面网上资料并不是很多,我的理解就是一个配置工具,可以管理选择软件组件。感兴趣可以访问官方帮助。
如下组件必选,CMSIS下面的CORE(CMSIS是基于Arm Cortex系列处理器的与供应商无关的硬件抽象层);Device是和设备相关的软件组件。勾选中并且没有问题的选项会以绿色显示,如果有问题的选项会呈现橘黄色,可以使用“Resolve”功能来解决问题。
从左下角的提示栏中可以看到,似乎是勾选Startup后,缺少了组件支持,展开TLELib,我并没有选SDK里的组件:
使用Resolve,Startup必须的SDK支持组件自动选中了:
顺便看一下SDK,TLE9893的所有外设驱动都在这里了,我准备调试一下UART,这里手动勾选上就行。大家根据需要勾选软件组件。
然后点击OK,回到主界面,继续做一些配置:
如下,可以将Target重命名,新建了两个,将Demo2设置为激活项效果如下:
删除Demo2,回到正常的一个文件架构,如下,开始给这个工程添加代码源文件,比如,main.c:
展开项目文件树,可以看到这个项目有一个main.c文件了,从File Extensions管理界面也可以看到:
配置一致。然后开始编译 编译结果为 .\Objects\demo.axf: Error: L6218E: Undefined symbol
Image $ ARM_LIB_STACK $ $ ZI $ $ Limit (referred from startup_tle989x.o).
此处考虑到是链接问题,首先点击“魔术棒” → 在“Target”标签下 → 勾选“Use MicroLIB” → 点击”OK“,重新编译。
此时工程报错: Error: L6218E: Undefined symbol __initial_sp (referred from
entry2.o).
即未定义初始化栈顶指针;
点击“魔术棒” → 在“Linker”标签下的“Linker control
string”栏出可以看到,链接的sct文件并非"tle9883_93.sct",需要进行修改;
取消勾选“Use Memory Layout from Target Dialog” → 在“Scatter
File”文件栏下拉选择"tle9883_93.sct"文件,若没有,则点击“…"按钮,按照路径“.\RTE\Device…”里面找到tle9883_93.sct文件,把绝对地址写进去就好了;
再次编译…
参考:
keil5报错Undefined symbol __initial_sp