###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
目前网络上的aes代码大多数只能对8/16字节的整数倍长度数据进行加密,这个例子可以对任意长度数据进行加密(包括0字节)
1
基于单片机的曼彻斯特编码程序,功能是将一个8位的数据(一个字节)进行曼彻斯特编码曼彻斯特编码的原则是:电平从高到低跳变表示'1',电平从低到高跳变表示'0'
2025/4/19 21:50:13 86KB 曼彻斯特编码
1
简单介绍了怎么用MFC实现串口通信:串行端口的本质功能是作为CPU和串行设备间的编码转换器。
当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位。
在接收数据时,串行的位被转换为字节数据。
1
字节跳动视频面试,试题记录与解析..
2025/4/15 20:21:55 8.73MB java http
1
可以查看和修改二进制文件,当然也包括文本文件。
以十六进制和文本同时显示文件内容。
可以按字节修改文件内容。
2025/4/8 11:01:02 1.99MB HEX FlexHEX 文件修改器
1
本文就简单介绍如何通过JAVA实现AES加密:/** *测试AES加密和解密 *@paramargs */ publicstaticvoidmain(String[]args){ /**数据初始化**/ Stringcontent="http://www.mbaike.net"; Stringpassword="1234567890"; /**加密(1)**/ System.out.println("加密前:"+content); byte[]encryptResult=encrypt(content,password); StringencryptResultStr=parseByte2HexStr(encryptResult); System.out.println("加密后:"+encryptResultStr); /**解密(2)**/ byte[]decryptFrom=parseHexStr2Byte(encryptResultStr); byte[]decryptResult=decrypt(decryptFrom,password); System.out.println("解密后:"+newString(decryptResult)); }}说明如下:在demo中使用了两个转换方法,及二进制转化成十六进制,和十六进制转化成二进制;
我们在AES加密的时候需要使用一个加密算的公共密钥来实现加密和解密;
加密后的字节数组不能直接转化为字符串,需要我们通过给出的两个方法转化;
1
winbox版本:v2.2.18大小:125440字节修改时间:2013年5月31日,20:47:55MD5:B0CDD3F51E01268EE3A37FD470AC4652SHA1:F08C7849D0161A3C681C7E341B04BB3AF8E3BC04CRC32:E01AA13F----------------------------------------------------------------------------------------mikrotik-6.0技术联盟①综合首发(6161279)----------------------------------------------------------------------------------------安装说明:采用官方原版6.0正式版制作IMG封包,请使用U盘PE写盘,压缩包内附批处理和工具。
附送KEY文件,方便大家使用。
2025/4/4 15:27:19 20.16MB ROS 软路由 ROS破解版
1
.版本2.子程序窗口_截图,字节集,公开,截取指定窗口的位图,可截取窗口中指定区域,最小化窗口或不可见窗口无法截取位图.参数窗口句柄,整数型,,欲截取窗口图片的窗口句柄.参数左边,整数型,可空,默认为0在窗口中截取图片的左边(相对于窗口的左边偏移坐标).参数顶边,整数型,可空,默认为0在窗口中截取图片的顶边(相对于窗口的顶边偏移坐标).参数宽度,整数型,可空,在窗口中截取图片的宽度(若为空,则截取整个窗口位图).参数高度,整数型,可空,在窗口中截取图片的高度(若为空,则截取整个窗口位图).子程序窗口_判断色彩度相同数,逻辑型,公开,满足最低相同数目返回真,否则返回假.参数窗口句柄,整数型,,指定的窗口句柄(对于最小化窗口或不可见窗口无效).参数色,整数型,,欲判断的颜色色彩度(色彩度:0-255).参数最低,整数型,,最低相同的数目.参数左下角,识图_坐标,可空,判断范围的左下角坐标,默认为0.参数宽度,整数型,,向右的范围宽度.参数高度,整数型,,向上的范围高度.参数返回相同数,整数型,参考可空.子程序窗口_取颜色,整数型,公开,取出窗口中指定点的颜色值(返回十进制颜色值,失败返回-1).参数窗口句柄,整数型,,欲取颜色值所在窗口的句柄.参数坐标X,整数型,,欲取的颜色值在窗口中的横坐标.参数坐标Y,整数型,,欲取的颜色值在窗口中的纵坐标.子程序窗口_取颜色数,整数型,公开,取出窗口中指定范围内某种颜色的数目,失败返回-1,未找到返回0.参数窗口句柄,整数型,,指定的窗口句柄(对于最小化窗口或不可见窗口无效).参数颜色,整数型,,欲判断的十进制颜色.参数左边,整数型,可空,范围左边,默认为0.参数顶边,整数型,可空,范围顶边,默认为0.参数宽度,整数型,,范围矩形宽度.参数高度,整数型,,范围矩形高度.参数相似度,整数型,可空,可空:无误差(0-255)RGB误差值无误差是带误差效率一半.子程序窗口_取最多色,整数型,公开,取出窗口中指定范围内最多的一种颜色值,返回十进制颜色值,失败返回-1.参数窗口句柄,整数型,,指定的窗口句柄(对于最小化窗口或不可见窗口无效).参数左边,整数型,可空,范围左边,默认为0.参数顶边,整数型,可空,范围顶边,默认为0.参数宽度,整数型,,范围矩形宽度.参数高度,整数型,,范围矩形高度.参数数目,整数型,参考可空,返回该颜色的数目.子程序窗口_找色彩,识图_坐标,公开,在窗口中指定范围内查找符合条件的色彩度,返回第一个符合条件的坐标(失败或未找到返回-1坐标).参数窗口句柄,整数型,,指定的窗口句柄(对于最小化窗口或不可见窗口无效).参数色彩度低,整数型,,欲寻找色彩度范围-低位(色彩度:0-255).参数色彩度高,整数型,,欲寻找色彩度范围-高位(色彩度:0-255).参数左边,整数型,可空,寻找范围-矩形左边,默认为0.参数顶边,整数型,可空,寻找范围-矩形顶边,默认为0.参数宽度,整数型,,寻找范围-矩形宽度.参数高度,整数型,,寻找范围-矩形高度
2025/3/28 20:14:25 119KB 识图模块
1
共 395 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡