- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
1
文档仅供参考
NVRAM读写操作详解
在MTK中,NVRAM是作为一个独立的task来运行的。
在nvram_main.c文件中,(代码有删减,注释部分用黄色标出,便于阅读)
voidnvram_task_main(task_entry_struct*task_entry_ptr)
{
kal_get_my_task_index(&my_index);
/*nvramspecialservice*/
nvram_special_service();
while(1)
{
//从
Q
中得到消息
receive_msg_ext_q(task_info_g[task_entry_ptr->task_indx].task_ext_qid,¤t_ilm);
stack_set_active_module_id(my_index,current_ilm.dest_mod_id);
//处理消息
nvram_main(¤t_ilm);
//释放消息
free_ilm(¤t_ilm);
}
}
Nvram_main
函数,处理NVRAM
相关的消息
voidnvram_main(ilm_struct*ilm_ptr)
{
if(ilm_ptr!=NULL)
{
2
消息消息
消息
消息
if((ilm_ptr->msg_id>=MSG_ID_NVRAM_CODE_BEGIN)&&(ilm_ptr->msg_id<=
MSG_ID_NVRAM_CODE_END))
{
if(ilm_ptr->msg_id==MSG_ID_NVRAM_STARTUP_REQ)
{
/
//STARTUP
nvram_startup_handler(ilm_ptr);
}
elseif(ilm_ptr->msg_id==MSG_ID_NVRAM_RESET_REQ){
/
//RESET
nvram_reset_handler(ilm_ptr);
}
elseif(ilm_ptr->msg_id==MSG_ID_NVRAM_READ_REQ)
{
nvram_read_handler(ilm_ptr);//READ消息
}
elseif(ilm_ptr->msg_id==MSG_ID_NVRAM_WRITE_REQ){
nvram_write_handler(ilm_ptr);//WRITE消息
}
elseif(ilm_ptr->msg_id==MSG_ID_NVRAM_SET_LOCK_REQ){
nvram_set_lock_handler(ilm_ptr);//LOCK消息,比较多用在TST中
}
}
}/*endofmodulemainfunction*/
也可以看到NVRAMtask处理几个消息.
3
文档仅供参考
READ流程
从
NV
NV
中读取一个数据,例如读取语言设置信息:
ReadValue(NVRAM_SETTING_LANG,&data,DS_BYTE,&error);
我们需要注明,NVRAM
的
LID,读取数据存放的指针,数据类型,和返回错误信息的地址.
#defineReadValue(nId,pBuffer,nDataType,pError)\
ReadValueInt(nId,pBuffer,nDataType,pError,__FILE__,__LINE__)
ReadValue精简了两个参数,不需要注明文件和第多少行,方面了应用使用.看一下
ReadValue
ReadValueInt这个函数
ReadValueInt
我们来看看这个函数到底干了什么事情:
S32ReadValueInt(U8nDataItemId,void*pBuffer,U8nDataType,S16*pError,S8*fileName,
S32lineNumber)
{
switch(nDataType)
{
caseDS_BYTE:
{
//byteDataReadFlag先记住这个标志,它标志了byte的数据是否已经被读取,
所以从这里我们可以猜测,NVRAM
(记住这个假设,稍后验证)
的数据,应该不是每次都从硬件读取的,而是有缓存的
/*secondtimereading,italwasyreturnonerequestitem*/
if(byteDataReadFlag)
{
//这个注释就更加明白了
/*Dataiscachednoneedtoreadf
您可能关注的文档
- macOS使用手册二(AppleID和iCloud、连接、观看和阅读、订阅服务、隐私和安全性、辅助功能、配件和硬件).pdf
- mem系列函数实现.docx
- MTK socket编程的一些经验.docx
- mtk平台软件调试方法与技巧.pdf
- MTK优美代码赏析8可变参数的C函数.docx
- MTK资源编译加载时找不到模块的头文件.docx
- MTV-拍摄计划及脚本.docx
- N-N-二异丙基乙胺安全技术说明.docx
- PMP第六版5大过程组49个过程.docx
- 1.3 创造力的要素和开发提高创造力 教学设计-2023-2024学年高中通用技术粤科版(2019)选择性必修9创造力开发与技术发明.docx
- 1.2 创新是技术发展的核心 教学设计-2023-2024学年高中通用技术粤科版(2019)选择性必修9 创造力开发与技术发明.docx
- 4.2 做一名优秀的创业者 教学设计-2023-2024学年高中通用技术粤科版(2019)选择性必修8:技术与职业探索.docx
- 2.1 职业的核心技能 教学设计-2023-2024学年高中通用技术粤科版(2019)选择性必修8:技术与职业探索.docx
- 2.2 认识职业素养 教学设计-2023-2024学年高中通用技术粤科版(2019)选择性必修8:技术与职业探索.docx
- 3.1 认识职业与认识自我 教学设计-2023-2024学年高中通用技术粤科版(2019)选择性必修8:技术与职业探索.docx
- 3.1 常用工具与创新工具 教学设计-2023-2024学年高中通用技术粤科版(2019)选择性必修9创造力开发与技术发明.docx
- macOS使用手册二(AppleID和iCloud、连接、观看和阅读、订阅服务、隐私和安全性、辅助功能、配件和硬件).pdf
- 安全管理制度与安全技术的结合与创新.pptx
- 财务管理制度与市场竞争的一体化.pptx
- 城市工程质量验收的工程质量与组织管理.pptx
文档评论(0)