打印
[Cortex-M0技术交流]

【转载】Nuvoton(新唐) Cortex M0 使用semihost输入输出办法

[复制链接]
5676|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
原文出处:http://my.chinaunix.net/space.php?uid=23480430&do=blog&id=1016

semihosting, 也就是我们平常说的半主机模式。
在嵌入式开发中,使用semihosting, 即使目标开发板没有外接输出串口,
我们也能很容易的利用调试工具的窗口,达到输入输出的效果。
这为我们调试产品带来了极大的便利。

最近有两家公司的Cortex M0芯片上市了。NXP和Nuvoton。
对比arm网站的描述,发现M0系列支持的调试功能真是有够简单。
所幸的是,Nuvotion的工具包支持所谓的semihosting的用法。
下面介绍如何在Nuvoton NUC100/NUC120...系列上使用semihosting功能。

笔者所用的开发工具是Keil uVision4,
Debugger ICE 需要用 Nuvoton的Nu-Link调试器,
用一块NUC120开发板. 过程如下:

1. 首先到nuvoton.com上下载一份NUC1XXBSP,
下载完后, 用Keil uVision4打开其中任何一个工程, 发现每个工程都差不多的组织形式,
工程中的这两个文件是我们接下来要处理的:
    CMSIS files\startup_NUC1xx.s
    Library files\retarget.c

2. 如果没有安装Nu-Link调试器驱动, 需要先安装一份.
   安装完后Keil的安装目录下有一个semihost的例子程序
      C:\Keil\ARM\BIN\Nu_Link\SemiHost
   用这个目录下的两个文件
     SH_startup_NUC1xx.s 和 SH_retarget.c
   替换原先工程中的 startup_NUC1xx.s 和 retarget.c

3. 重新编译原先的工程, 将编好的代码烧录到NUC120开发板上运行.
   烧录/运行的时候一定要用Keil+Nu-Link调试器. 运行起来后, 点击菜单
       "View -> Serial Window -> UART1" , 打开虚拟串口1
   如果程序中有printf, 您会看到printf的输出都输出到这个 "串口1" 来了.
   (不经Keil直接在flash中运行程序怎么样? 当然输出到真实串口了)

事实上,如果只是测验一下,
直接编译, 用Keil运行 Nu-Link自带的项目 C:\Keil\ARM\BIN\Nu_Link\SemiHost,
就可以看到semihost的输入/输出效果了.




结束之前, 同时写两个注意的地方:
1. 一定要用Nuvoton的Nu-Link搭配Keil IDE. 用Ulink2也不行, 貌似Ulink2碰到semihost指令就停下了.
2. 替换文件后重新编译, 如果使用了scatter file连接办法, 要检查下scatter file中的文件名是否要同样修改, 否则build时连接通不过.

相关帖子

沙发
缥缈九哥| | 2011-3-27 10:22 | 只看该作者
顶。这是去年6月份我开始学新唐M0,能搜索到的仅有的几个帖子之一。特别怀念,所以向菜农推荐了一下。

使用特权

评论回复
板凳
murex| | 2011-3-27 20:41 | 只看该作者
这个帖子的确不错,俺还一直在想怎么printf语句没在串口输出呢,顶

使用特权

评论回复
地板
hotpower|  楼主 | 2011-3-29 06:58 | 只看该作者
首先感谢九哥和菜农的好朋友作者酒鬼先生

使用特权

评论回复
5
dong_abc| | 2011-4-9 19:22 | 只看该作者
找来找去,原来在这里。

使用特权

评论回复
6
tlb| | 2011-4-26 07:43 | 只看该作者

使用特权

评论回复
7
lwslws201| | 2011-8-2 23:42 | 只看该作者
1# hotpower

看不懂也顶。

使用特权

评论回复
8
hotpower|  楼主 | 2011-8-2 23:48 | 只看该作者
本帖最后由 hotpower 于 2011-8-2 23:53 编辑

顶起来!!!
老师正在搞,俺先调试一下,这样省去了俺的USB转串口了。

1.半主机调试贴图



2.串口调试贴图:

使用特权

评论回复
9
电子write_cai| | 2011-8-2 23:56 | 只看该作者
顶 顶 更有劲

使用特权

评论回复
10
wang0225| | 2011-8-3 08:02 | 只看该作者
给力,我这破本子没串口!支持

使用特权

评论回复
11
电子write_cai| | 2011-8-3 08:17 | 只看该作者
给力,我这破本子没串口!支持
wang0225 发表于 2011-8-3 08:02
菜叔昨天还惦记你的LOOK进度呢

使用特权

评论回复
12
hotpower|  楼主 | 2011-8-3 09:06 | 只看该作者
争取晚上上传带半主机调试的look例程。
俺将每个例程的调试过程都放在每个例程文件夹内的look_semihost.txt文件内。
半主机可以更好更感观地认识rtos,可以很清楚地看到每个任务运行的实际情况。
250倍的加速了look的学习进度!

使用特权

评论回复
13
电子write_cai| | 2011-8-3 09:40 | 只看该作者
争取晚上上传带半主机调试的look例程。
俺将每个例程的调试过程都放在每个例程文件夹内的look_semihost.txt文件内。
半主机可以更好更感观地认识rtos,可以很清楚地看到每个任务运行的实际情况。
250倍的加速了look ...
hotpower 发表于 2011-8-3 09:06
:D

使用特权

评论回复
14
hotpower|  楼主 | 2011-8-3 14:00 | 只看该作者
中午没休息上传了一个例程。
https://bbs.21ic.com/icview-252714-1-1.html

使用特权

评论回复
15
uniquehope| | 2011-8-3 14:29 | 只看该作者
菜农大叔辛苦拉~~~~·:lol

使用特权

评论回复
16
电子write_cai| | 2011-8-4 08:17 | 只看该作者
这个要顶,以后肯定要用下。

使用特权

评论回复
17
uniquehope| | 2011-8-4 19:36 | 只看该作者
已看,虽然自己还是初学者~~

使用特权

评论回复
18
mtxmxt| | 2011-8-4 20:19 | 只看该作者
hotpower辛苦了,注意身体

使用特权

评论回复
19
lixiaoxu2meng| | 2011-8-5 15:47 | 只看该作者
顶起 !

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1460

主题

21619

帖子

506

粉丝