更新历史 版本时间更新作者 Rev. A 初始创建 Dracula 微控电子乐微电子杭州市登云路 639 号 2B143 销售 TEL: 支持 TEL: FAX: ww

Similar documents
Microsoft Word - MAN2011A_CH_RTT.doc

Microsoft Word - MAN2023A_CH_APPONE.doc

untitled

手册 doc

目 录

Microsoft Word - 使用u-boot测试9261开发板.doc

Microsoft Word - 服装_hyc13_ doc

如何使用 CCS v5 调试 DM81XX 的 M3 代码 在调试 M3 的代码时, 用户需要实时查看参数值 如果在 IPNC RDK 串口终端上直接打印输出参数值, 每增加一个参数就需要添加打印代码, 还需要重新编译下载, 麻烦而且效率低 CCS 提供的调试功能可以方便的查看参数值, 随时可以增加

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc

Microsoft Word - 家用电器_hyc7620_ doc

51 C 51 isp 10 C PCB C C C C KEIL

第 十 一 期 2015 年 2 月 关 于 车 辆 购 置 税 征 收 管 理 有 关 问 题 的 公 告 ( 点 击 跳 转 至 全 文 ) 国 家 税 务 总 局 公 告 2015 年 第 4 号 关 于 电 池 涂 料 消 费 税 征 收 管 理 有 关 问 题 的 公 告 ( 点 击 跳

ARM JTAG实时仿真器安装使用指南

SST SPAC SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD / SoftICE SoftICE MCU SoftICE SS

プリント

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

经 济 高 速 增 长 和 其 后 又 比 其 他 发 达 资 本 主 义 国 家 更 为 顺 利 地 克 服 了 石 油 危 机 的 冲 击, 使 日 本 的 市 场 经 济 体 制 在 7 0 ~ 8 0 年 代 赢 得 了 国 际 社 会 的 广 泛 赞 誉 ( 其 间 虽 有 欧 美 国 家

2015 TB-1-06.indd

NEXT SDT2.51 C:\ARM251 SDT2.51 ARM SDT 2.51 ARM PROJECT MANAGER SDT 2

更新历史 版本 时间 更新 作者 Rev. A 初始创建 Dracula Rev. B 添加 tftp server 的安装 Dracula Rev. C 小修改 Dracula 微控电子乐微电子杭州市登云路 639 号 2B143

Microsoft Word 箕æ−¥ï¼‹å®ı稿;

98年度即測即評學科測試與即測即評即發證技術士技能檢定簡章

Abstract arm linux tool-chain root NET-Start! 2

Microsoft Word - Copy of end-4.doc

更新历史 版本时间更新作者 Rev. A 初始创建 Dracula 微控电子乐微电子杭州市登云路 639 号 2B143 销售 TEL: 支持 TEL: FAX: www.

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

TMS320C6678入门笔记.doc

MarsBoard AM335X 用户手册 微雪电子 WAVESHARE ELECTRONICS MarsBoard AM335X 用户手册 产品概述 MarsBoard AM335X 是基于 TI AM335X 系列处理器的卡片式电脑 工业级别的芯片, 广泛的应用 在工业, 医疗, 消费类电子等行

Microsoft Word - install_manual-V _CN.docx

河 南 蓝 皮 书 文 化 (2008) 网 络 文 学 主 要 是 指 在 网 上 原 创 的 文 学 作 品 作 为 网 络 文 化 的 主 力 部 分, 网 络 文 学 的 发 展 在 近 年 来 势 不 可 挡 作 为 凭 借 新 兴 媒 介 兴 起 的 文 学, 网 络 文 学 与 传 统

《將進酒》

21 flash

untitled

秘密

E11701


105 學 年 度 臺 中 市 立 國 民 中 學 藝 術 才 能 舞 蹈 班 學 生 招 生 暨 鑑 定 重 要 程 序 日 程 表 項 目 重 要 日 期 重 要 工 作 事 項 辦 理 單 位 簡 章 公 告 105 年 3 月 簡 章 暨 報 名 表 請 自 行 於 各 承 辦 網 站 下

臺北市立百齡高級中學九十二學年度第一學期代理教師甄選辦法草案

第九屆全國環境保護模範社區優良事蹟.PDF


教育扩张能改善收入分配差距吗?——来自CHNS2006年数据的证据

山水文化,市井人家——以湖州邱城小镇的概念性规划为例

Microsoft Word - 1-3陳詠琳-近代..

國 際 金 融 業 務 台 北 市 忠 孝 東 路 四 段 325 號 6 樓 (02) FAX:(02) 分 行 北 寧 分 行 台 北 市 南 京 東 路 四 段 16 號 (02) FAX:(02) 復 旦 分 行

MarsBoard AM335X 用户手册 微雪电子 WAVESHARE ELECTRONICS MarsBoard AM335X 用户手册 产品概述 MarsBoard AM335X 是基于 TI AM335X 系列处理器的卡片式电脑 工业级别的芯片, 广泛的应用 在工业, 医疗, 消费类电子等行

JTAG ICE PC JTAG ICE JTAG ISP... 5 IDE AVR STUDIO JTAGICE JTAGICE... 12

第 一 部 分 网 银 注 册 签 约 篇 山 西 省 农 村 信 用 社 个 人 网 上 银 行 为 客 户 提 供 账 户 管 理 转 账 汇 款 理 财 业 务 客 户 服 务 安 全 中 心 等 服 务 功 能 1. 网 上 银 行 用 户 类 型 个 人 网 上 银 行 客 户 采 用 数


二零一五年施政報告 - 施政綱領 - 第三章 扶貧及為弱勢社群提供支援

<4D F736F F D20BACBB0B2C8ABD3EBB7C5C9E4D0D4CEDBC8BEB7C0D6CEA1B0CAAEB6FECEE5A1B1B9E6BBAEBCB C4EAD4B6BEB0C4BFB1EA2E646F63>

<4F4BBEFAA576A470BBA15FC160AAED E786C73>

辽宁铁~1

游戏攻略大全(十).doc

I

海底捞你学不会

YEN/MIAO CHING MS 27FEB DEL HKG

Microsoft Word - 02文本.docx


案件

義 和 團 及 兪 國 聯 軍 之 役 課 題 學 習 指 引 : A. 思 考 課 題 有 人 說, 義 和 團 及 兪 國 聯 軍 之 役 是 中 國 近 代 史 的 分 水 嶺, 你 同 意 嗎? B. 思 考 方 向 滿 清 政 府 的 管 治 威 信 思 考 是 否 已 不 信 任 滿 清

最新监察执法全书(一百五十五).doc

游戏攻略大全(三十四).doc

掌握健康 掌握人生


草莓实用技术(一)

Microsoft Word - 【襪子流浪記】.docx

最新监察执法全书(十一).doc

钓鱼技巧_二_.doc

动物的智慧(五)

学位〔2013〕37号

海关法规(七).doc

健康知识(一)

北京(一)

穨ecr6_c_2.PDF

i

园林植物卷(九).doc

城市园林(上).doc

家装知识(四)

苗木的种植_四_.doc

认识植物(一)

蟹的养殖技术(一)

药用植物种植技术(二)

特种养殖实用技术(七)

游戏攻略大全(五十三).doc

司法鉴定工作手册(十八)

外科疾病诊治(三)

动物杂谈_三_.doc

(3) (4) (1) (2) (d) V-2

外科疾病诊治(十九)

新时期共青团工作实务全书(一百四十八)

外科疾病诊治(五)

案件

养虾小常识_二_.doc

养虾小常识_三_.doc

铁路管理规程(三)


外科疾病诊治(二十七)

第四章 生活习俗

铁路管理规程(五)

Transcription:

文档编号 _CH 文档版本 Rev. A 文档摘要 描述了使用 Trace32 来调试运行于 SDRAM 的 SAM9 代码的方法和过程 关键词 Trace32 SAM9 SDRAM 程序 创建日期 2010-01-19 创建人员 Dracula 审核人员 Hotislandn 文档类型 公开发布 / 开发板配套文件 版权信息 Mcuzone 原创文档, 转载请注明出处

更新历史 版本时间更新作者 Rev. A 2010-01-19 初始创建 Dracula 微控电子乐微电子杭州市登云路 639 号 2B143 销售 TEL:+86-571-89908193 支持 TEL:18913989166 13770507096 FAX:+86-571-89908193 www.mcuzone.com www.atarm.com

1. 概述 Trace32 ARM ICD( 以下简称 T32) 是一款高性能的 ARM 仿真器, 自带调试软件环境, 功能很强大 在裸奔的情况下,SAM9 大部分用户的代码都将运行于 SDRAM, 因为内部 RAM 空间有限 而代码运行于 SDRAM 时, 调试就有了其特殊性 但是如果拥有了 T32, 那么一切就可以迎刃而解 本文介绍使用 T32 调试运行于 SAM9261S SDRAM 中的 ucos-ii 的代码的基本过程 Ucos-II 使用 keil 编译,keil 版本是 3.80a 2. 安装 T32 调试软件 2.1 安装软件 使用 T32 提供的安装光盘安装 T32 调试软件 安装完成后连接上 T32 的硬件, 然后安装驱动 注意 : 如果是 vista 以上 ( 含 ) 的系统, 需要安装特殊的驱动, 与 XP 不同 然后在桌面创建 T32 的快捷方式 : 3. 编译 Bootstrap 3.1 修改代码 需要编译 Bootstrap 的原因有两点 : 一是需要使用编译生成的 bin 文件来加载正式的 SDRAM 代码, 具体原因可以参考本站的 MAN3008, 二是编译生成的 elf 文件可以用于 T32 初始化 SAM9261S 的外部 SDRAM, 然后再加载 ucos-ii 的 axf 文件, 因为 SDRAM 在初始化之前是无法使用的 ATMEL 原始提供的 Bootstrap 源码是为 SAM9261 编写的, 并不适合 SAM9261S, 需要修改 修改加载参数,ucos-II 的代码将被烧写到 data flash 的 0x8400 处, 并被加载到 SDRAM 的 0x20000000 处运行 :

修改 Makefile 中的栈顶的定义, 因为 SAM9261S 只有 16KB 的内部 RAM: 也可以在头文件中打开 debug 的支持, 添加一些用户定义的字符串 3.2 编译代码 运行 make 即可 : 这里使用的是 arm-none-eabi- 的工具链 编译生成的文件 : 代码的 mem 消耗的信息 : 生成的 bin 文件用于烧写,elf 文件用于加载调试

4. ucos-ii 代码 4.1 编译代码 ucos-ii 的代码使用 keil MDK 编译, 代码的 link 地址必须在 0x2000-0000, 与前面 Bootstrap 指定的一致 同时需要设定好 ram 中的异常向量 对于 SAM9261S SDRAM 这样的应用, 建议用 scatter loader file 来控制应用的 mem map 编译完成后生成 axf 文件如下 : 生成的 axf 文件用于调试,bin 文件用于烧写 5. 调试代码 5.1 初始化环境 首先将 SAM9261S 板子上电, 将 dbgu 连接到 PC, 开启终端软件, 并使板子进入 SAM boot 模式, 终端收到 如下信息 : 连接好 T32, 包括板子侧的 20pin 电缆和 PC 侧的 USB 电缆, 运行 t32 的 IDE:

在底端的命令行依次输入如下命令 : 指定处理器 指定 jtag 时钟频率 指定连接方式并回车后, 会发现处理器处于运行状态 : 点击暂停按钮 : 使得处理器暂停 : 此时打开相关的窗口, 比如 source, register:

并将其合理排列一下 : 排列好后可以将当前的设置保存到文件 : 下次可以直接 load 这个 window 的设置从而避免重复设置 比如 save 到这个文件 : 下次在处理器停止时, 直接使用下面的命令就可以加载窗口设置 :

5.2 加载 Bootstrap 使用命令加载 Bootstrap 的 elf 文件 : 文件路径可以粘贴进去, 也可以凭记忆输入, 支持 tab 键自动补全 敲回车可以看到 elf 被加载, 并进入 debug 状态 如果找不到 source 文件, 可以用下面命令指定搜索路径 : 代码合一的效果 : 使用 mode 按钮可以转换为源文件和反汇编两种方式, 上图显示的是反汇编方式, 也可以方便的查看源码 使用上方的按钮可以控制程序的运行 : 同时可以观察寄存器窗口的变化 : 由于加载 Bootstrap 的目的只是为了初始化 SDRAM, 所以直接在程序最后设置一个断点 :

设置断点的方法是直接双击要设置的程序位置即可, 设置完成后在断点窗口里也可以看见 : 点击程序控制里的 Go 按钮, 程序停在断点处 : 灰条即是当前 PC 的位置, 现在寄存器显示程序将跳转到 0x2000-0000 处运行 : PC 上的终端串口也会有 Bootstrap 的 debug 输出 : 此时,SDRAM 已经初始化就绪 5.3 加载 ucos-ii 在前面的 Bootstrap 在断点处停下后, 直接使用相同的命令再次加载 ucos-ii 的 axf 文件 : 加载的效果 : PC 指针位于 0x2000-0000 处

源代码方式 : 此时可以使用程序控制命令控制程序的运行 : 5.4 设置断点 虽然可以直接找到代码所在, 然后双击打断点 但是当工程中包含的文件很多时, 找代码也是麻烦 在 T32 的调试环境下可以很方便的设置断点, 只要知道公有函数的名字 比如,ucos-II 的代码中有一个在 RAM 中安装异常向量的函数 : 直接在 T32 环境的命令行中输入 : 输入过程中可以使用 tab 键自动补全 输入完成后回车, 即可在那个函数处设置一个断点 : 选择 Store 可以将当前的断点设置保存到文件, 而使用 Load 可以加载以前的断点设置文件, 可以直接使 用之前的断点设置, 继续调试

按运行, 看到代码停在断点处 : 此时从 back trace 窗口可以看到代码执行的轨迹 : 这个图中保留了当前函数的运行轨迹, 可以看出当前代码调用过程 ( 从下往上, 与压栈顺序一致 ) 串口中也有相应的输出 : 5.5 查看内存 在前面的代码处停下来后, 我们可以打开内存查看窗口, 看看异常向量的安装

回车后会打开内存查看窗口 也可以使用菜单提供的功能 : 设置参看方式, 由于是代码不需要 ascii 的显示, 同时显示为 Long 类型, 因为 ARM 指令是 32 位 : 显示 data 窗口 : 在安装向量的代码中单步, 就可以看到 data 区域的变化 : 安装的向量 :

一直单步到该函数结束, 可以看到代码的执行位置 : 此时还处于系统初始化的阶段 5.6 调试 OS 启动 在 ucos-ii 中, 多任务开始于 OSStart() 调用之后 : 直接在该函数处打个断点 : 全速执行到此处 : 注意, 断点窗口显示的断点命中状态 这个函数计算当前系统最高优先级的任务, 然后调用 OSStartHighRdy() 真正的启动这个任务

高亮调用 OSStartHighRdy() 的那行, 右键选择 Go Till, 程序停在调用处 : 打开反汇编模式 : 单步跟入 :

如果不习惯反汇编模式, 可以直接看源码 : 单步跟踪这段代码, 可以看到任务是如何被启动的 在执行恢复寄存器之前停下 : 注意此时的寄存器状态 : 特别要注意其中的 SP, 栈中的数据就是马上要恢复的数据 按下单步恢复寄存器 :

恢复出的寄存器 : 再执行一次单步, 进入第一个任务 : 单步运行一些代码 :

串口中的相应输出 : 当前还在任务 MainTask() 中, 直接在另一个任务 US0Task() 中打个断点 : 直接 Go, 停在了断点处, 也就是第二个任务也被调度运行 : 注意此时 PC 的值, 位于 SDRAM 中 一般的调试过程就是断点, 运行, 单步的过程, 根据寄存器, 内存的数据判断程序的状态, 排除可能存在 的问题