FLASH结构

部署运行你感兴趣的模型镜像

RDA支持的FLASH型号列表“drv_spi_flash_table.h”

 常用型号:

KH/MX 3206E    KH/MX 3236F

华邦4M:W25Q32

关于写保护:

  例如博雅FLASH  BY25Q32BS  4M 写保护区域 62/63th。

  

  配置文件如上图:

  1、蓝色箭头“2”代表要写两个状态寄存器。

  3、红色箭头表示,第一个状态寄存器的值。

  3、粉色箭头表示,第二个状态寄存器的值。

  SPEC 定义的状态寄存器如下:

   

  SPEC:写保护配置如下:

  

 

 

 

RR8501.BIN结构

RR8501不同的MODEL经过压缩和加密

code.tmp.bin未经过加密,分析code.tmp.bin

 UE打开

20 00 00 10 00 00 00 00 00 D0 07 00 F0 7B 01 00

BootSize = 0x07D000

 

SHARE DATA读写

tv_SaveFlashSetting()

 

 

mergedir/code.tmp.bin  压缩未加密文件的FLASH文件

mergedir/sfs/nvm.bin     shareData数据文件,未加密、未压缩

数据克隆:DATA/ALL

APP_Clone_Backup_SystemData_To_USBBackup(CV_FM_DATA)

APP_Clone_Backup_FlashData_To_USBBackup(DataType_t DataType)  //BACKUP_ROMBIN_DATA

 

中间件的读写:  Cmd_FlashWrite(UINT32 destAddr, UINT32 srcAddr, UINT32 size)

中间件模块读写: Cmd_FlashModuleUpdate(INT8 * moduleName, INT8 * updateData, UINT32 updateSize)

通过ID寻找地址:  Cmd_GetAddrAndSizeByFlashID(UINT8 flashID, UINT32 *pFlashAddr, UINT32 *pFlashSize)

shareData的读写:tv_SaveFlashSetting()

读写FLASH: spi_write_flash

更新POWER键:update_option_ir_power_key

SFS底层调用:spi_dmawrite(__u32 dest,__u32 src,__u32 size)

信号量的操作:VD_SEM_TAKE/VD_SEM_GIVE

设备读:Cmd_NVMRead(UINT8 eNvmID, UINT8 u8Compress, UINT32 u32Count, UINT8 *pu8Buffer)

设备写:Cmd_NVMWrite(UINT8 eNvmID, UINT8 u8Compress, UINT32 u32Count, UINT8 *pu8Buffer)

组件装载:AL_Setting_Reload(AL_SETTING_HANDLE handle, al_uint8 user_pref_id) //user_pref_id=0xff 装载整个设备到cache

读取默认值到cache:AL_Setting_ReadDefault(AL_SETTING_HANDLE handle,al_uint8 user_pref_id, const al_void *data)

读写内存:AL_Setting_Read()/AL_Setting_Write()

写FLASH:AL_Setting_Store() 

     AL_Setting_Store(APP_Data_UserSetting_Handle(), 0xFF, 0, sizeof(APP_SETTING_Storage_t));  //将cache所有数据写到FLASH

drv_spi_flashalloc_external.h

#define SPI_CODEFLASH_BASEADDR 0xBC000000
#define SPI_DATAFLASH_BASEADDR 0xBF000000

#define SPI_ADCDATA_FLASHID (0x01) //12k
#define SPI_KMFSHARE_FLASHID (0x02) //1k
#define SPI_CIDATA_FLASHADDR (0x03) //need to remove
#define SPI_RRTTABLE_FLASHADDR (0x04) //need to remove
#define SPI_BOOTSHARE_FLASHID (0x05) //customer used
#define SPI_NVMDATA_FLASHID (0x10)

 设备枚举

typedef enum
{
ENVMPurposeIDDatabaseDVBT,
ENVMPurposeIDDatabaseDVBC,
ENVMPurposeIDDatabaseDVBS,
ENVMPurposeIDDatabaseSBTVD,
ENVMPurposeIDDatabaseATV,
ENVMPurposeIDSysSetting,
ENVMPurposeIDSysSettingVariational,
ENVMPurposeIDCVFMBackup,
} ENVMPurposeID_t;

组件枚举:

enum
{
SYS_SET_ID_VERSION,
SYS_SET_ID_PICTURE,
SYS_SET_ID_SOUND,
SYS_SET_ID_CHANNEL,
SYS_SET_ID_FEATURE,
SYS_SET_ID_SETUP,
SYS_SET_ID_MULTIMEDIA,
SYS_SET_ID_TVINFO,
SYS_SET_ID_USERINFO,
SYS_SET_ID_SYSINFO,
SYS_SET_ID_FACTUSER,
SYS_SET_ID_FACTHOTEL,
SYS_SET_ID_IRMAPTABLE,
SYS_SET_ID_VARIATIONAL,
MAX_BLOCKS_NUM
};

typedef enum

{
FM_ClearLock = 0,
FM_DataBaseEx,
FM_DataBaseIm,
FM_PrevPage = 14,
FM_HotelSetting_1_Max,
} fm_HotelSetting_1_Param_t;

enum FlashIndex
{
KMF_BROMSHAREDATA_FLASHINDEX =0,
KMF_GAMMATABLE_FLASHINDEX,
KMF_ADCCOLOR_FLASHINDEX,
KMF_PICCOLORTMP_FLASHINDEX,
KMF_PQDEFAULT_FLASHINDEX,
KMF_MULTITABLE_FLASHINDEX,
KMF_FLASHINDEXEND
};

app_clone_data.c

 

有壓 BootROM
有壓 Kernel
沒壓 OUIMAINinfo
有壓 Custable
有壓 DefPanel
有壓 GammaTable
有壓 VIPTable
有壓 CLUPTable
沒壓 IR501
沒壓 KeyPad
有壓 Logo
沒壓 EDID
沒壓 HDCPKey
沒壓 CIKey

 

IIC API:

INT8 Cmd_i2c_Read(UINT8 deviceID, UINT8 addr, UINT8 *pValue)
INT8 Cmd_i2c_Write(UINT8 deviceID, UINT8 addr, UINT8 value)

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

### NOR Flash与NAND Flash结构上的主要区别 #### 结构差异 NOR Flash 和 NAND Flash 在内部架构上有明显不同。NOR Flash 使用并行访问方式,允许处理器像访问内存一样直接寻址和执行代码[^1]。相比之下,NAND Flash 采用串行访问机制,数据按页读取,最小操作单位是一个块(通常是512字节),这使得其不适合随机存取但有利于提高写入效率和降低成本。 对于单元连接方面,在 NOR 架构中,每个存储单元都单独连接到位线和字线上形成矩阵布局;而在 NAND 设计里,则是以多个浮栅晶体管串联成链状结构再与其他链条相连构成阵列形式[^3]。 #### 性能对比 由于上述结构性质的不同,两者表现出各异的工作特性: - **读取速度**:NOR Flash 支持快速随机读取,可以直接从闪存上运行程序而不必加载至 RAM 中,因此具有较高的指令执行速率。然而,这种设计也导致了相对较低的数据吞吐量。 - **写入/擦除时间**:NAND Flash 提供更快的写入和擦除周期,因为它的批量处理模式可以更高效地管理大量数据传输任务。不过,它无法实现真正的随机访问功能,每次读写都需要针对整个页面或区块进行操作[^2]。 #### 应用领域 基于这些特点,这两种技术适用于不同类型的应用场合: - **NOR Flash** 更加适合用于保存少量的关键配置信息以及引导加载程序等需要频繁调用的小规模代码片段。例如,在微控制器(MCU)内核附近集成一小部分 NOR 型非易失性存储空间来存放启动固件是非常常见的做法[^4]。 - **NAND Flash** 则广泛应用于大规模数据记录介质之中,比如移动电话、平板电脑里的操作系统映像文件和个人多媒体资料库等。此外,现代高性能计算平台所依赖的企业级 SSD 多数也是基于 NAND 技术构建而成[^5]。 ```python # 示例 Python 代码展示如何区分两种Flash类型的功能侧重点 def compare_flash_types(): nor_features = ["Direct Execution", "Faster Random Reads"] nand_features = ["Higher Write Speeds", "Lower Cost per Bit"] print("NOR Flash is better suited for applications requiring:") for feature in nor_features: print(f"- {feature}") print("\nWhile NAND Flash excels at providing:") for feature in nand_features: print(f"- {feature}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值