ADSP-21489的开发详解:Norflash的编程和烧写

news2024/11/18 23:50:17

编者的话

Flash 编程与烧写,原本应该是开发的最后一步,当所有程序都做好了,在线编译运行正常,才会通过 Flash 编程,生成二进制的可执行文件 LDR,再通过 JTAG 仿真器将 LDR 文件烧写到 Flash 中,上电 BOOT 实现脱机运行的功能。

我们为何把这个章节安排在第二个阶段,是因为 21489 的第二种编程方式,首选就需要烧写程序,所以在这个文档里,先把烧写程序的方法给用户做详细的阐述,也好顺利的进入第三个阶段。

ADI 的 DSP,通过 Flash 编程生成的二进制可执行文件尾椎为 LDR,但实际上他的数据格式仍然是通过用户自己选择,而组合成的 BIN,HEX 等常规数据。所以大家不要被 LDR 这个名字所疑惑,仅仅只是 ADI 取的名字罢了。打个比方就是,ADI 拿一个叫做 LDR 的瓶子来装BOOT 数据,而这些数据归根到底,依然是我们在其他嵌入式处理器开发中所熟知的 BIN,HEX 等等,ADI 也无法别出心裁的整出一个独特的数据格式来。

21489 的这块板上,我们做了 NORFLASH 和 SPIFLASH 两种,下面也会对每一种 Flash 做详细的注解,如何来生成这两种 flash 可用的 LDR 文件,又如何来通过 AD-HP530ICE 仿真器去烧写相应的 LDR 文件到 FLASH 中,实现脱机。

Flash 编程和烧写前所需要做的准备工作

硬件准备

在这里插入图片描述
仿真器:AD-HP530ICE
开发板:ADSP-21489EVB

软件准备

Visual DSP++5.1.2

硬件链接

仿真器和开发板通过 JTAG 连接,开发板上电,仿真器上电。

软件链接

新建 21489 的 session,具体可参见前面文章中的详细说明,此处不再讲解。

NORFLASH 编程

此章将详细讲解如何使用 VDSP 软件来进行 NORFLASH 编程,生成 boot 用的 LDR 文件。我们以按键控制 LED 灯的程序来做例程讲解。

  1. 把工程拖到 VDSP 软件中来。

在这里插入图片描述

  1. 在工程名上按鼠标右键,选择“Project Options…”

在这里插入图片描述

  1. 根据芯片的实际版本,为工程选择一个芯片版本,将“Type”选为“Loader File”。我们现在用的 21489 都是 0.2 版,所以就选择 0.2。

在这里插入图片描述

  1. 按下图为生成的 LDR 文件选择格式,设置完成后点“确定”按钮,完成 LDR 文件的配置。ADSP21489_prom.dxe 文件位于 FlashDriver 文件夹里的 NORFLASH 文件夹下。

在这里插入图片描述

NORFLASH 生成 LDR,所以在 Boot Type 里选择 Parallel port;Format 我选择的是 Binary,一直用这个,没啥因为所以;Width 选择 8-bit,因为 Flash 就是 8bit 的。

Kernel file 这个就很关键了,必须要需要添加这个 kernel,这个 kernel 是 ADI 公司提供的,我只是把它单独拧出来放到我的 Flash Driver 文件夹里,方便调用。

  1. 选择“ ReBuild all“按钮全编译工程。

在这里插入图片描述

  1. 编译完成后,会看到生成文件提示。该文件默认生成地址为当前工程的 Debug 文件夹下。

在这里插入图片描述

烧写

  1. 选择 Tools 里的 Flash Programmer。特别注意,一定要链接好 session,才有此选项!

在这里插入图片描述

  1. 为 NorFlash 加载一个“.dxe”格式的驱动文件,这个文件在 “Flash Driver”文件夹下。

这个是 Flash 的烧写驱动,每一个型号的 Flash 都需要专门对应自己的驱动,ADI 提供了一个驱动源码,如果用户的 Flash 型号与原厂提供的这个不符,则需要对驱动进行修改。我们开发板使用的就是ADI原厂的这个Flash型号,所以就可以直接用这个Driver,不用做任何修改。在这里 OP 也建议大家都用原厂提供的这个型号,否则自己改 Flash烧写驱动,还是一件挺麻烦的事情。

在这里插入图片描述

  1. 找到“ ADSP21489_FlashDriver.dxe”文件。

在这里插入图片描述

在这里插入图片描述

  1. 按下图选择选项,然后点“ Data”后面的按钮,找到 ADSP21489_PBLED 工程下 Debug 文件夹下刚才生成的“ ADSP21489_PBLED.ldr”文件。

在这里插入图片描述

  1. 烧写过程中的读条,请静心等待。

在这里插入图片描述

  1. 完成烧写。

在这里插入图片描述

  1. 断开链接,完整 Flash 编程和烧写得工作。

在这里插入图片描述

  1. 将 BOOT 开关 SW2 和 SW3 分别拨到 OFF 和 ON,设置成 NORFLASH 启动

  2. 拔掉电源插头,重新上电,并打开电源开关,按下按键,相应的 LED 灯亮,验证完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/62983.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初探 Vue3 新特性

在本讲中,我们只会概述性的来介绍一下 Vue3 中新增的一些主要内容,而这些主要知识点的详细的使用和功能以及作用,我们会在后面的课程里面逐渐的给大家去解锁。那么明确好了我们的学习目标之后呢? 我们来看一下 Vue3 之中到底新增…

Docker---Docker-compose 安装部署 zentao 禅道

Docker-compose 安装部署 zentao 禅道 目录Docker-compose 安装部署 zentao 禅道一、环境准备1.更换国内源2.拉取zentao的docker镜像3.关闭防火墙4.安装启动docker、docker-compose二、通过yml文件进行部署一、环境准备 1.更换国内源 CentOS7 Base源: wget -O /et…

技术男的春天:小姐姐求助暖男分析

时光荏苒,这个故事发生在4年前,那时候我头发可真厚,坐地铁也不用戴口罩。 小姐姐求助 友圈一位要做毕设的小姐姐在求助postman怎么用,我就帮她解答了一下。 我知道她并非计算机相关专业,所以很奇怪为什么要用postma…

web安全渗透

自己模拟的环境,要的私信 Web安全渗透 1、通过URL访问http://靶机IP/1,对该页面进行渗透测试,将完成后返回的结果内容作为flag值提交; 修改源码maxlength对应的数值,3+16=19输出的数值是两位数,然后修改完之输入

HTML+CSS+JS网页设计期末课程大作业—— 绿色化妆品HTML+CSS+JavaScript

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

Windows搭建web站点:为站点配置二级子域名 2-2

在上一篇文章《Windows搭建Web站点:免费内网穿透发布至公网 1/2》中,我们成功通过cpolar将内网web站点发布到公网可访问,但免费使用cpolar所生成的域名是随机变化的(24小时后会变化),这只适合临时测试使用。…

Mysql SQL优化跟踪来看看是如何优化并决策使用哪个索引或者不适用索引

背景 使用索引字段进行筛选数据时,explain查询语句发现MySQL居然没有使用索引,产生疑问,因此决定调查清楚为什么会不用索引,而是走全表扫描 原因调查出的结果是当你要查询的数据量是连续又占整个表五分之一以上那就不会走索引了&a…

Java面试宝典.exe程序成功运行,经典 Java 万字笔记,查漏补缺,备战跳槽面试

现在 java 的面试真的卷到家了,面试前很有必要针对性的多刷题,大部分童鞋实战能力强,理论不行,面试前不做准备很吃亏。这里整理了很多常考面试题,希望对你有帮助。 耗时一个月,我把牛客网上最火的 Java 面…

ZMQ之共享键值缓存(克隆模式)

发布-订阅模式和无线电广播有些类似,在你收听之前发送的消息你将无从得知,收到消息的多少又会取决于你的接收能力。让人吃惊的是,对于那些追求完美的工程师来说,这种机器恰恰符合他们的需求,且广为传播,成为…

导出 txt文件 处理思路和实现流程

1.先看导出目标文件需要的字段都存不存在, 存在继续处理,不存在就添加。 例如,我这里需要在若依的用户表在添加一个银行账户数据, //银行卡号 private String accountNumber; public String getAccountNumber() { r…

Java程序员3个月从月薪6k涨到15k,你知道我是怎么过来的吗?

(一). 基础 1. Java 基本功 Java 入门(基础概念与常识) Java 语法 基本数据类型 方法(函数) 2. Java 面向对象 类和对象 面向对象三大特征 修饰符 接口和抽象类 其它重要知识点 3. Java 核心技术 集合 异常 多线程 文…

Python——协程(Coroutine),异步IO

目录 生成器(Generator) yield表达式的使用 生产者和消费者模型 ​编辑 yield from表达式 协程(Coroutine) asyncio.coroutine async/await 总结 由于GIL的存在,导致Python多线程性能甚至比单线程更糟。 于是出现了协程(Coroutine)这…

Arduino UNO通过PCF8574串行IIC接口驱动LCD1602/LCD2004液晶屏

LCD1602/2004液晶屏简介 LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。可以显示2行每行16个字符,总共32个字符。字符型液晶显示模块是一种专门用于显示字母、数字和符号等的点阵式LCD,常用161,162,202和402等的模块。不…

Go编程项目实战教程

Go编程项目实战教程 在这个面向初学者的 Go 编程语言课程中,您将通过构建 11 个项目来提高您的 Go 编程技能 课程英文名:Learn Go Programming by Building 11 Projects – Full Course 此视频教程共21.0小时,中英双语字幕,画质…

数据之道读书笔记-07打造“数字孪生”的数据全量感知能力

数据之道读书笔记-07打造“数字孪生”的数据全量感知能力 在信息化时代构建的IT系统,基本上是功能化、烟囱化、封闭式的,只能给企业内部经过培训的专业人员使用,所有的决策数据和我们信任的IT系统基本都是靠人来录入数据。但是,人…

Android移动开发基础——实训项目:个人财务软件

目录 步骤 1. 项目计划 需求分析 程序流程图 2. 实现功能模块 2.1 登录模块 前提 软件:Android Studio开发工具、JDK1.8以上版本 目标:编写个人财务软件 步骤 (1)根据设计题目要求的指标,通过查阅有关资料…

某学生宿舍楼设计

目 录 1.建筑设计部分 1 1.1工程概况 1 1.2设计依据 2 1.3标高及建筑细部作法 2 1.4平面设计 2 1.4.1建筑方案设计 2 1.4.2建筑做法 4 1.4.3 建筑设计成果 6 2.结构设计部分 7 2.1结构平面设计 7 2.2构件截面尺寸的初步确定 8 2.3荷载统计 10 2.3.1楼屋面及卫生间恒活计算 10 2…

热加载技术:修改Python代码并实时查看结果 ⛵

💡 作者:韩信子ShowMeAI 📘 Python3◉技能提升系列:https://www.showmeai.tech/tutorials/56 📘 本文地址:https://www.showmeai.tech/article-detail/406 📢 声明:版权所有&#xf…

基于MindSpore框架的道路场景语义分割方法研究

概述 本文以华为最新国产深度学习框架Mindspore为基础,将城市道路下的实况图片解析作为任务背景,以复杂城市道路进行高精度的语义分割为任务目标,对上述难处进行探究并提出相应方案,成功地在Cityscapes数据集上完成了语义分割任务…

vue3+ts做echarts做一个简单的折线渐变图

vue3做echarts做一个简单的折线渐变图 效果 代码&#xff1a; </template> <div><div class"date-change"><el-date-picker size"small" v-model"dateValue" value-format"YYYY-MM-DD" type"daterange&qu…