###TIDM36x系列DSPNANDFlash启动过程详解####一、NANDFlash启动原理#####1.1DM365支持的NAND启动特性TI的TMS320DM365(以下简称DM365)多媒体处理芯片支持多种启动方式,包括NANDFlash启动。
在NANDFlash启动过程中,DM365具有一系列独特的启动特性:1.**不支持一次性全部固件下载启动**:DM365不支持一次性将所有固件数据从NANDFlash读入内存并启动,而是采用分阶段的方式。
首先从NANDFlash读取第二级启动代码(UserBootLoader,UBL)至ARM内存(ARMInternalMemory,AIM),然后执行UBL。
2.**支持最大4KB页大小的NAND**:支持的NANDFlash页大小可达4KB,这对于大多数常见的NANDFlash设备来说是足够的。
3.**支持特殊数字标志的错误检测**:在加载UBL时会进行错误检测,尝试最多24次在不同的block中寻找特殊数字标志,以确保数据的正确性。
4.**支持30KB大小的UBL**:DM365有32KB的内存用于存放启动代码,其中2KB用于RBL(ROMBootLoader)的堆栈,剩余的空间可用来存储UBL。
5.**用户可选的DMA与I-cache支持**:用户可以根据需要在RBL执行期间启用或禁用DMA和I-cache等功能。
6.**支持4位硬件ECC**:支持每512字节需要ECC位数小于或等于4位的NANDFlash,这有助于提高数据的可靠性。
7.**支持特定的NANDFlash类型**:支持那些需要片选信号在Tr读时间保持低电平的NANDFlash。
#####1.2NANDFlash启动流程NANDFlash启动流程是指从芯片上电到Linux操作系统启动的整个过程,主要包括以下几个步骤:1.**ROMBootLoader(RBL)阶段**:当DM365芯片上电或复位时,会根据BTSEL引脚的状态确定启动方式。
如果是NAND启动,则从ROM中的RBL开始执行。
RBL会初始化必要的硬件资源,如设置堆栈,关闭中断,并读取NANDFlash的ID信息以进行适当的配置。
2.**UserBootLoader(UBL)阶段**:RBL从NANDFlash读取UBL并将其复制到AIM中运行。
UBL负责进一步初始化硬件资源,如DDR内存,并为下一阶段准备环境。
3.**U-Boot阶段**:UBL从NANDFlash读取U-Boot并将其复制到DDR内存中运行。
U-Boot是完整的启动加载程序,它负责最终从NANDFlash读取Linux内核并将其复制到DDR内存中。
4.**Linux内核启动阶段**:U-Boot启动Linux内核,内核加载并运行,此时系统完成启动。
####二、NANDFlash启动的软件配合实现#####2.1UBL描述符的实现UBL描述符是UBL读取和执行的起点。
在NANDFlash中,UBL描述符通常位于特定的位置,包含UBL的起始地址和长度等信息。
RBL通过读取这些描述符来确定UBL的具体位置并加载到AIM中。
#####2.2U-Boot启动实现U-Boot是一种开源的启动加载程序,负责从NANDFlash读取Linux内核并将其加载到内存中。
U-Boot的实现依赖于UBL提供的环境,例如已经初始化的DDR内存。
#####2.3U-Boot更新UBL和U-Boot的原理U-Boot可以被用来更新UBL和自身的代码。
这一过程通常涉及到从NANDFlash读取新的代码版本,验证其完整性,并将其替换现有的UBL或U-Boot代码。
#####2.4NANDFlash没有坏块的情况在理想情况下,即NANDFlash没有坏块的情况下,启动流程会非常顺利。
RBL能够成功地从NANDFlash读取UBL,UBL也能正确地读取U-Boot,进而完成Linux内核的加载。
####三、结束语DM365的NANDFlash启动过程是一个复杂的多阶段过程,涉及ROMBootLoader(RBL)、UserBootLoader(UBL)和U-Boot等多个组件之间的协调工作。
通过对这些组件的理解和优化,可以有效地提高启动速度和系统的稳定性。
希望本文能帮助读者更好地理解DM365的NANDFlash启动过程及其背后的技术细节。
2025/5/20 15:59:25 439KB DSP NANDflash 启动过程分析
1
基于瑞昱RTL8382L24口交换芯片的24口+2光口的千兆交换参考设计。
包括基于Cadence平台设计的原理图、PCB和RTL8382L、RTL8281B的技术手册
1
我在互联网上找了很久,发现没有人发布关于matlab从txt文档中读取16进制数转换为矩阵,再转换为2进制数矩阵,再按位拆分为01矩阵,处理完成后再转换为16进制输出的方法,这个程序也可以改写成读入十进制,输出十进制的,删掉16进制转十进制的那两条代码就可以了。
程序实现的是读取24位的16进制数转为对应的二进制01矩阵再转回十六进制输出。
1
众所周知,IE浏览器的性能是很差的,特别在使用诸如WebQQ2.0这样的丰富的网页应用时,你就能明显感觉到IE的内核和谷歌浏览器的webkit内核之间的性能差异了,那么有没办法提高IE的性能呢?ChromeFrame是Google推出的一个针对IE6,7,8开发的免费开源的浏览器插件,它可以让IE浏览器使用上webkit内核。
使用该插件后,用户的IE将获得和Chrome浏览器一样的高性能和丰富的功能,例如高速的Javascript引擎、支持HTML5、CSS3等新特性……用IE的壳,装上Chrome的芯ChromeFrame插件实际上就是可以让用户的浏览器外观依然是IE的菜单和界面,但当用户浏览网页时,实际上使用的是GoogleChrome浏览器的内核来对页面进行运算解析和渲染。
简单地说,就是用IE的壳,装上Chrome的芯。
IE在安装了ChromeFrame后,Acid测试达到了100分满分使用谷歌浏览器内嵌框架ChromeFrame的优势:IE6提速40倍,IE8提速10倍提高您的网页浏览速度在使用谷歌浏览器的内嵌框架后,浏览网站可获得更快的响应速度和性能。
使用更多高级功能通过谷歌浏览器内嵌框架,你的浏览器可以等到诸如HTML、CSS3等新功能的支持。
不会改变您原来的上网方式谷歌浏览器内嵌框架ChromeFrame依然使用IE的界面和菜单,不会改变你原来的上网习惯。
禁用和卸载ChromeFrame的方法:因为国内很多例如网上银行之类的应用只支持万恶的IE,当你需要禁用ChromeFrame时,只需要:1.工具-管理加载项2.在工具栏和扩展中,找到ChromeFrameBHO.3.禁用它另外,卸载ChromeFrame的话,只要在控制面板中像卸载普通软件一样卸载即可。
2025/4/30 18:09:44 30.86MB IE Chrome
1
windowsMediaPlayer控件类,主要为在VS中找不到ActiveX控件里的windowsMediaPlayer控件类所提供,里面有24类,版本较新.方法介绍:http://blog.csdn.net/akof1314/archive/2009/11/29/4900244.aspx
2025/4/20 8:54:33 23KB windows Media Player 控件类
1
第1篇Java编程基础  第1章Java开发环境的搭建(教学视频:9分钟)2  1.1理解Java2  1.2搭建Java所需环境3  1.2.1下载JDK3  1.2.2安装JDK4  1.2.3配置环境5  1.2.4测试JDK配置是否成功7  实例1开发第一个Java程序7  第2章Java基础类型与运算符(教学视频:39分钟)9  2.1基础类型9  实例2自动提升9  实例3自动转换10  实例4常用基础类型之强制转换11  2.2运算符12  实例5算术运算符12  实例6关系运算符13  实例7逻辑运算符14  实例8位运算符15  实例9移位运算符16  实例10转型运算符17  2.3其他形式18  实例11常量与变量18  实例12各种进制的转换19  实例13Java中的进制与移位运算符22  第3章条件控制语句(教学视频:75分钟)26  3.1if控制语句26  实例14判断输入的年份是否为闰年26  实例15抽奖活动27  3.2for语句28  实例16小九九乘法表28  实例17如何列出素数29  实例18Java中的递归31  实例19男生女生各多少人32  实例20求水仙花数34  实例21求任意一个正数的阶乘35  实例22求n的n次方35  实例23利用for循环输出几何图形36  实例24杨辉三角38  3.3while语句39  实例25求1到100之间的和39  实例26存上100元需要多少天40  实例27输出100之间的所有偶数41  实例28如何判断回文数字42  3.4do…while语句43  实例29输出100之间的所有奇数44  实例30求最大的随机数44  3.5switch语句45  实例31判断字母分类46  实例32优良及差47  实例33打印任意一年日历48  实例34一年四季的划分51  第2篇Java数据处理  第4章异常处理(教学视频:62分钟)54  4.1编译时异常54  实例35除0发生的算术异常(ArithmeticException)54  实例36数组下标越界异常(ArrayIndexOutOfBoundsException)55  实例37数组元素类型不匹配异常(ArrayStoreException)56  实例38强制类型转换异常(ClassCastException)56  实例39索引越界异常(IndexOutOfBoundsException)57  实例40空指针异常(NullPointerException)58  实例41数字格式转换异常(NumberFornatException)59  实例42字符串索引越界异常(StringIndexOutBounds)60  实例43操作错误(UnsupportedOperationException)60  4.2运行时异常61  实例44找不到指定类时发生的异常(ClassNotFoundException)62  实例45请求的方法不存在(NoSuchMethodException)63  4.3try…catch捕获异常65  实例46try…catch捕获异常的实例66  实例47try…catch…finally捕获异常的实例67  实例48try…catch嵌套捕获异常的实例68  4.4throws声明异常69  实例49throws声明异常实例一69  实例50throws声明异常实例二70  4.5throw抛出异常72  实例51throw抛出异常实例一72  实例52throw抛出异常实例二73  4.6自定义异常74  实例53自定义异常实例一74  实例54自定义异常实例二75  第5章数组(教学视频:98分钟)78  5.1一维数组78  实例55一维数组的创建与使用78  实例56按相反的顺序输出79  实例57奇偶分组80  实例58找宝81  实例59寻找最小数82
2025/4/19 0:50:42 16.86MB Java范例开发大全
1
【OpenGL】二十四、OpenGL纹理贴图(读取文件内容|桌面程序添加控制台窗口|‘fopen‘:Thisfunctionmaybeunsafe错误处理)https://hanshuliang.blog.csdn.net/article/details/113001095博客源码(该源码是Windows桌面程序,使用VisualStudio2019打开)
2025/4/18 19:08:39 18.86MB OpenGL
1
Androidsdk中的工具包,版本为24.0.2,使用方法:解压后将整个文件夹移动到build-tools文件夹下即可。
2025/4/16 12:29:51 39.49MB Android sdk build-tools 24.0.2
1
数据结构课程设计之运动会分数统计速算24有详细流程,有源代码,希望对你有帮助
2025/4/13 17:19:01 1003KB 数据结构 课程设计 运动会分数
1
实验目的:通过实验理解算法的概念、算法的表示、算法的时间复杂度和空间复杂度分析;
运用熟悉的编程工具对码头扩建问题进行求解,初步学会分析算法的时间复杂度某市有一码头,每次仅容一辆船停泊装卸货,由于经常有船等候进港,部分人提出要扩建码头。
经过调查历史资料发现,码头平均每月停船24艘,每艘船的停泊时间为24±20小时,相邻两艘船的到达时间间隔为30±15小时,如果一艘船因有船在港而等候1小时,其消耗成本为1000元。
经预算,扩建码头大约需要1350万元,故市长决策如下:如果未来五年内停泊船只因等候的成本消耗总和超过扩建码头花费则扩建码头,否则,不予扩建。
因此,希望你能够帮助市长做出决策。
此问题已知到达的大概时间和大概停泊时间,对于此问题用概率统计的方法来做比较复杂,可用程序随机产生到达时间和停泊时间来模拟未来五年内船的停泊,多次模拟预测停泊情况,以做出决策;
3.实验要求:编制程序并对其时间复杂度和空间复杂度进行分析;
1
共 517 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡