【DM365_NAND启动模式解析】DM365是一款由TexasInstruments(TI)生产的数字媒体处理器,常用于视频处理和嵌入式系统。
在DM365中,NAND闪存是一种常见的非易失性存储器,用于存储固件和操作系统。
NAND启动模式是指DM365在上电或复位后从NAND闪存中加载启动代码的过程。
此过程涉及一系列复杂的步骤,确保系统能够正确地从NAND中读取和执行固件。
**NAND启动流程**1.**初始化**:系统首先初始化RAM1的高2KB栈空间(0x7800-0x7fff),避免覆盖用于存储UBL块号的最后32个字节(0x7ffc-0x8000)。
2.**禁止中断**:所有中断(IRQ和FIQ)被禁用,以确保启动过程不被打断。
3.**设置DEEPSLEEPZ/GIO0**:这个外部引脚在NAND启动时必须处于高电平。
4.**读取NANDID**:读取NAND闪存的设备ID,获取设备特性,如页面大小、块大小等。
5.**初始化NAND区域**:根据NAND的参数设置控制器和寄存器。
6.**搜索UBL描述符**:RBL(ROMBootloader)在block1的page0开始搜索UBL(UserBootLoader)的描述符。
如果未找到正确的UBL,会依次检查接下来的24个块,以防遇到坏块。
7.**处理UBL描述符**:UBL描述符包含入口点地址、占用的NAND页数、起始块和起始页等信息,用于指导UBL的加载和执行。
8.**ECC错误检测和校正**:开启硬件ECC(ErrorCorrectionCode)检测,复制UBL到IRAM(InternalRAM)。
如果检测到4位ECC错误,通过ECC算法进行纠正。
如果多次失败,RBL会尝试下一个块,直到找到有效的UBL描述符,或者在搜索完24个块后转而从SD卡启动。
9.**启动UBL**:在UBL的入口点执行代码,将控制权交给UBL。
10.**安全启动模式**:根据配置,启动模式可能包括PLL旁通模式,不使用快速EMIF、DMA或I-Cache。
在其他模式下,这些功能可以被启用以提高性能。
**NANDUBLdescriptor格式**UBL描述符是一个包含关键信息的数据结构,用于指示如何加载和执行UBL。
它可能包含如下字段:-入口点地址:UBL执行的起点。
-UBL占用的NAND页数:指示UBL的大小,必须是连续的页。
-UBL的起始块和起始页:定义UBL在NAND中的位置。
-MAGICIDs:特定的标识符,用于识别不同的启动模式。
**NAND启动详细流程**1.初始化栈空间、禁止中断、设置DEEPSLEEPZ/GIO0。
2.读取NAND设备ID,初始化NAND控制器。
3.搜索UBL描述符,最多遍历24个块。
4.复制并校验UBL到IRAM,根据UBL描述符配置启动选项。
5.转交控制权给UBL执行。
NAND启动流程图和具体的ARMNANDROMBootloader实例进一步详细说明了这个过程。
此外,支持的NAND设备ID列表确保了对多种NAND闪存设备的兼容性。
DM365的NAND启动模式解析涉及了设备识别、错误检测、固件加载和执行等多个环节,确保了系统的稳定和可靠启动。
理解这一过程对于开发和调试基于DM365的嵌入式系统至关重要。
2025/5/20 16:04:21 249KB DM365
1
本文首先介绍了Xicor公司生产的非易失性数字电位器X9241芯片的内部结构及其主要功能和特点,描述了X9241的工作原理。
接着给出了与Atmel公司89C2051微处理器的硬件接口电路和X9241在实际工作中的常用子程序以及注意事项。
2025/4/15 1:35:50 234KB X9241 89c2051 中文资料 汇编
1
DS3070W是Dallas公司最新推出的单片、内含实时时钟的非易失性静态存储器。
该器件内部集成了16MbNVSRAM、非易失性控制器、实时时钟和一个锂锰(ML)可充电电池。
介绍了DS3070W的性能特点及工作原理,给出了它与AT89C51的典型应用电路及子程序。
1
PsTools用于易失性数据收集
2024/3/6 9:15:56 917KB PsTools 易失性 数据收集
1
中文版目录总汇及内容提要第一章.企业应用中的作业调度内容提要:什么是作业调度,作业调度为什么说是重要的,企业应用中的作业调度,非企业应用中的作业调度,作业调度与工作流,关于作业调度其他可选择方案第二章.Quartz起步内容提要:本章对Quartz框架一个快速的入门介绍,同时也大略指导你从哪里下载,构建和安装这个框架第三章.HelloQuartz(第一部分)内容提要:建立HelloQuartz工程,并创建一个QuartzJob类ScanDirectoryJob.第三章.HelloQuartz(第二部分)内容提要:创建一个QuartzScheduler,关联上一个QuartzTrigger以编程方式调度前面编写的ScanDirectoryJob运行。
第三章.HelloQuartz(第三部分)内容提要:通过配置quartz.properties、quartz_jobs.xml以声明的方式调度ScanDirectoryJob运行。
第三章.HelloQuartz(第四部分)内容提要:让我们最后简单讨论打包一个用到了Quarts框架的应用程序的流程,需要依赖于哪些包,也以此来结束本章的内容。
第四章.部署Job(第一部分)内容提要:介绍Scheduler和SchedulerFactory有哪些类型、SchedulerFactory的关键API方法;
以及如何通过java.util.Properties实例或默认quartz.properties文件创建Scheduler。
第四章.部署Job(第二部分)内容提要:如何管理Scheduler(启动、停止、Standby模式)。
还介绍了Job、JobExecutionContext、JobDetail、JobDataMap,及如何访问JobDataMap中的数据。
有状态和无状态的Job。
第四章.部署Job(第三部分)内容提要:Job的易失性、持久性和可恢复性,如何从Scheduler中移除、中断Job。
Quartz已为我们提供了哪些Job。
最后是Java线程的简单介绍。
第四章.部署Job(第四部分)内容提要:线程在Quartz中的用法,主处理线程:QuartzSchedulerThread和Quartz工作者线程。
QuartzTrigger和Calendar各有哪些类型和如何使用。
第五章.Cron触发器及相关内容(第一部分)内容提要:引入QuartzCronTrigger 及简单使用CronTrigger来部署一个Job第五章.Cron触发器及相关内容(第二部分)内容提要:详细介绍了cron表达式的格式和像,-*?/LWC#特殊符号的使用第五章.Cron触发器及相关内容(第三部分)内容提要:CronTrigger使用起(startTime)迄(endTime)日期的使用。
TriggerUtils简单方便的创建Trigger。
应用JobInitializationPlugin在quartz_jobs.xml配置文件中写Cron表达式。
第五章.Cron触发器及相关内容(第四部分)内容提要:Cron表达式Cookbook,列举了各种Cron表达式的写法和意义,有助于更好的理解Cron表达式;
还用了TriggerUtils创建了一个即刻触发的Trigger。
第六章.Job存储和持久化(第一部分)内容提要:介绍Quartz中的Job存储,JobStore接口相关API方法。
使用RAMJobStore来实现Job存储及它的优缺点。
第六章.Job存储和持久化(第二部分)内容提要:使用持久性的JobStore,可用类型JobStoreTX和JobStoreCMT。
持久性JobStore是通过数据库来完成的,哪可支持哪些数据及需要创建些什么表。
第六章.Job存储和持久化(第三部分)内容提要:使用和配置JobStoreTX,需要为不同数据库平台指定不同的驱动代理(DriverDelegate),和quartz.properties中与JobStoreTX相关配置说明。
第六章.Job存储和持久化(第四部分)内容提要:为JobStoreTX通过在quartz.properties配置来创建数据源,并在Scheduler中使用数据源第六章
2023/6/28 22:27:03 1.18MB Quartz 使用文档
1
FM24C04B是一种付与先进铁电工艺的4K字节非易失性存储器。
铁电随机缘晤存储器(FRAM)玄色易失性的,可如RAM同样举行读写操作。
数据能牢靠留存38年,同时可消除了由EEPROM以及另外非易失性存储器引起的繁杂性、资源开销以及体系级牢靠性下场。
FM24C04B以总线速率实施写操作,且不会暴发提前。
数据告成传输到器件后,会在(总线)周期内写入内存阵列,下个总线周期可连忙末了,而无需举行数据轮询。
FM24C04B可反对于1012个读/写周期,或者比EEPROM多100万次的写周期。
注:本文档是依据英文版本翻译而来,若存在不明晰或者差迟之处,请参考英文版本。
2023/4/24 7:45:37 1.56MB FM24C04B 铁电工艺 存储器 非易失性
1
变数1-它是存储价值的容器2-没有int或特殊符号可以定义变量常数-常数类型1-整数常数(1,7,-3)2-实常数(322.1,22.3)3-字符常量(“a”,“$”,“@”)关键词1.自动2.休息3.案例4.字符5.常量6.继续7.默认8.做9.双10.长11.前往12.注册13.短14,签名15.sizeof16.静态17.int18,其他19.枚举20,外部21.float22为23.转到24.如果25.结构26.开关27.typedef28.联盟29.未签名30.void31.易失性32岁C程序的基本结构AC程序以主要功能开始库功能print(“这是%d”)%d用于整数%f代表实际价值字符的%c如何从用户那里获取输入声明一个变量询问使用printf用于回答使
2023/2/21 0:14:31 603KB C
1
这是加密狗复制克隆软件,可以完成部分正版加密狗复制工作,为正版软件获得更多的应用授权。
加密狗,是一种插在计算机并行口上的软硬件结合的软件加密产品,硬件加密锁、FreeEIM,俗称“加密狗”,加密狗一般都有几十或几百字节的非易失性存储空间可供读写,新品的内部还包含了单片机。
加密狗为多数软件开发商所采用。
这是加密狗复制机,一些软件是带狗的,每次用的时候还要插入狗,这个小东东可以把硬件狗上的软件(一般都是一些DLl文件读取出来)这样就可以把那些软件做成完全硬盘般啦,想怎样复制传播都可以,哈哈也适用于想发布破解行业软件的朋友哦。
1
具有全局能量迁移的太阳能非易失性传感器节点的最初期限感知任务调度
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡