• 011:Nuvoton(新唐) Cortex M0 使用semihost输入输出办法(转)


    Nuvoton(新唐) Cortex M0 使用semihost输入输出办法 (2010-03-09 19:02)

    标签Cortex M0 Nuvoton semihost 输出  分类: 开发 - ARM / Cortex

    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时连接通不过.

  • 相关阅读:
    关于大型网站技术演进的思考(二)--存储的瓶颈(2)[转]
    根据 Sourcemap 调试打包后的js
    webpack 中某些配置
    Javascript 中的数组
    浮动元素的display属性
    安装升级npm依赖
    锚点定位
    我所认识的java泛型(主要讨论通配符的使用)
    快速排序的递归非递归实习java
    java 选择排序
  • 原文地址:https://www.cnblogs.com/afeibfp/p/2857716.html
Copyright © 2020-2023  润新知