用文件模拟CMOS保存数据

Hi3520D 芯片的内置CMOS最多只有5个字节可以用,但是我需要保存的数据有很多。

其中一个解决办法是:可以把其他需要保存的数据放到一个配置文件中。每次写的时候写到配置文件,用的时候再从配置文件读出数据即可。

 

用文件写:

 1 static INT CmosExtWrite(U16 RegOffset, U8 *Buffer, U32 Size)
 2 {
 3     int i;
 4     FILE *fp;
 5     int ret = 0;
 6     fp = fopen(CMOS_FILE, "rb+");
 7     if(fp == NULL)
 8     {
 9         PrintInformaton("%s not exist , will create it \n", CMOS_FILE);
10         return -1;
11     }
12 
13     if(Cmos_Flag == 0)
14     {
15         ret = fread(file_context, sizeof(file_context), 1, fp);
16         Cmos_Flag = 1; //已读
17     }
18 
19     memcpy(file_context + RegOffset, Buffer, Size);
20     
21     fseek(fp, 0 ,SEEK_SET);
22     fwrite(file_context, sizeof(file_context), 1, fp);
23     fflush(fp);
24         
25     fclose(fp);
26 
27 
28 #if 0
29     printf("CmosExtWrite success!!! RegOffset:0x%x\n", RegOffset);
30 
31     for(i = 0; i < Size; i++)
32     {
33         printf("Buffer[%d]: 0x%x\n", i, *(Buffer + i));
34     }
35 #endif    
36     
37     return 0;
38     
39 }

 

 

用文件读:

 1 static INT CmosExtRead(U16 RegOffset, U8 *Buffer, U32 Size)
 2 {
 3     int i;
 4     FILE *fp;
 5     fp = fopen(CMOS_FILE, "ab+");
 6     
 7     if(fp == NULL)
 8     {
 9         PrintInformaton("%s not exist , will create it \n", CMOS_FILE);
10         return  -1;
11     }
12 
13     if(Cmos_Flag == 0)
14     {
15         fread(file_context, sizeof(file_context), 1, fp);
16 
17         Cmos_Flag = 1; //已读
18     }
19 
20     
21     if(RegOffset > 256)
22     {
23         return -1;
24     }
25 
26 
27     memcpy(Buffer, file_context + RegOffset, Size);    
28 
29     fclose(fp);
30 
31 
32 #if 0
33     printf("CmosExtRead success!!! RegOffset:0x%x\n", RegOffset);
34     
35     for(i = 0; i < Size; i++)
36     {
37         printf("Buffer [%d]: 0x%x \n", i, *(Buffer + i));
38     }
39 #endif
40 
41     return 0;
42 }

 

转载于:https://www.cnblogs.com/jiangjh/p/3307626.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

160 - 24 Chafe.2

环境&#xff1a; Windows xp sp3 工具 exeinfope OllyDBG 查壳 用exeinfope查壳&#xff0c;发现是没有壳的。 测试 可以看出是从红色框框里面的内容判断serial是否有效 OD载入&#xff0c;字符串搜索可以得到&#xff1a; 004011EC . 55 pus…

十个利用矩阵乘法解决的经典题目

转载自 Matrix67: The Aha Moments 好像目前还没有这方面题目的总结。这几天连续看到四个问这类题目的人&#xff0c;今天在这里简单写一下。这里我们不介绍其它有关矩阵的知识&#xff0c;只介绍矩阵乘法和相关性质。 不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色…

[C++]搞清楚类中构造与析构的顺序

定义一个类对象时&#xff0c;首先根据初始化列表初始化类的成员&#xff08;就算没有显式定义初始化列表&#xff0c;编译器也会默认地初始化一次&#xff09;&#xff0c;然后运行构造函数。因此&#xff0c;类成员的构造函数必定先于类的构造函数运行。 class A { public:A(…

160 - 25 CodeZero.1

环境 Windows xp sp3 工具 exeinfope OllyDBG 查壳 无壳的VB程序 测试 运行程序后出现Nag窗口&#xff0c;所以这次的目标是除Nag窗口和找到serial 程序运行后弹出Nag窗口&#xff0c;并且等待5秒后按钮的标题改成“Continue..”&#xff0c;点击后才会弹出输入seria…

WP8开发学习笔记动态修改启动时导航的第一个页面(如登录前启动页为LoginPage,登录后变为MainPage)...

很多时候我们需要在启动程序的时候根据状态改变初始导航页面&#xff0c;比如程序在启动的时候判断用户是否登录&#xff0c; 如果未登录则跳转到LoginPage.xaml否则跳转到MainPage界面。 这时候就要分析程序的启动和导航的过程。 程序的启动是App.xamlcs负责的。 App类的构造器…

6.数组和Hash表

当显示多条结果时&#xff0c;存储在变量中非常智能&#xff0c;变量类型会自动转换为一个数组。 在下面的例子中&#xff0c;使用GetType()可以看到$a变量已经不是我们常见的string或int类型&#xff0c;而是Object类型&#xff0c;使用-is操作符来判断是否是个数组&#xff0…

160 - 26 Colormaster

环境 Windows xp sp3 查壳 无壳的VB程序 测试&#xff1a; 输入 Name:123456 Serial:12345 字符串搜索&#xff0c;找到判断位置。 判断Name的长度要大于等于5&#xff1a; 00402CBC . 33C9 xor ecx,ecx 00402CBE . 83F8 04 cmp eax,0x4 00…

Android 菜单(OptionMenu)大全 建立你自己的菜单

菜单是用户界面中最常见的元素之一&#xff0c;使用非常频繁&#xff0c;在Android中&#xff0c;菜单被分为如下三种&#xff0c;选项菜单&#xff08;OptionsMenu&#xff09;、上下文菜单&#xff08;ContextMenu&#xff09;和子菜单&#xff08;SubMenu&#xff09;&#…

160 - 27 Cosh.1

环境 Windows XP sp3 工具 exeinfope ollydbg 查壳 无壳的MFC程序 测试 弹出这个&#xff1a; 是一个CD-CHECK保护的程序。 字符串搜索&#xff0c;一下子就能来到这里&#xff1a; 0040121A . 68 9C304000 push Cosh_1.0040309C …

什么时候加上android.intent.category.DEFAULT

1、要弄清楚这个问题&#xff0c;首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent。 Explicit Intent明确的指定了要启动的Acitivity &#xff0c;比如以下Java代码&#xff1a; Intent intent new Intent(this, B.class) Implicit Intent没有明确的指…

[BZOJ 2165] 大楼 【DP + 倍增 + 二进制】

题目链接&#xff1a;BZOJ - 2165 题目分析&#xff1a; 这道题我读了题之后就想不出来怎么做&#xff0c;题解也找不到&#xff0c;于是就请教了黄学长&#xff0c;黄学长立刻秒掉了这道题&#xff0c;然后我再看他的题解才写出来。。Orz 使用 DP 倍增 &#xff0c;用状态 f[…

oracle创建表空间

注意点&#xff1a; 1.如果在PL/SQL 等工具里打开的话&#xff0c;直接修改下面的代码中[斜体加粗部分]执行 2.确保路径存在&#xff0c;比如【D:\oracle\oradata\Oracle9i\】也就是你要保存文件的路径存在 /*分为四步 */ /*第1步&#xff1a;创建临时表空间 */ create tempor…

160 - 28 CoSH.2

环境 Windows xp sp3 工具 exeinfope ollydbg 查壳 无壳的MFC程序 测试 输入 Nmae:123456 Serial:12345 点击“CHECK”后弹出错误提示的消息框&#xff0c;然后程序自己结束掉 依然是字符串搜索&#xff1a; 004014DB . 8B1D FC214000 mov ebx,dword ptr ds…

负载均衡情况下获取真实ip的方法

公司用了硬件负载均衡&#xff0c;最近发现日志中的用户ip都为负载均衡器的ip&#xff0c;业务需要所以要改为用户真实ip&#xff0c;下面记录一下&#xff01; 1、打开文件&#xff1a;/etc/httpd/conf/httd.conf。2、在文件中查找&#xff1a;”CustomLog”,找到如下配置块: …

ASP.NET MVC5 + EF6 入门教程 (5) Model和Entity Framework

文章来源&#xff1a; Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html 上一节&#xff1a;ASP.NET MVC 5 入门教程 (4) View和ViewBag 下一节&#xff1a;ASP.NET MVC5 EF6 入门教程 (6) View中的Razor使用 源码下载&#xff1a;点我下…

160 - 29 cosh.3

环境 Windows xp sp3 工具 exeinfope ollydbg 查壳 无壳的MFC程序 测试 字符串搜索&#xff1a; 004014F5 |. E8 AA030000 call <jmp.&MFC42.#CWnd::GetWindowTextLengthA_> 004014FA |. 8945 EC mov [local.5],eax 004014FD |. 837D EC 0…

hdu--4902--线段树

题意 前面一段废话 这题 最有意思的应该是出题人 是clj 这题的时限放的太宽了 给了15s 我也是醉了 区间更新。 1 #include <iostream>2 #include <algorithm>3 using namespace std;4 5 const int size 200010;6 int a[size];7 struct data8 {9 int L , R ,…

(五) 面向对象类设计原则

1. 开闭原则&#xff08;the Open Closed Principle OCP&#xff09; 一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。因此在进行面向对象设计时要尽量考虑接口封装机制、抽象机制和多态技术。该原则同样适合于非面向对象设计的方法&#xff0c;是软件工程 设计…

160 - 30 cracking4all.1

环境 Windows XP sp3 工具 exeinfope ollydbg 查壳 无壳的VB程序 测试 这个serial藏得比较里面&#xff0c;多点几下才能看到 字符串搜索&#xff1a; 00403338 . 50 push eax ; /var18 00403339 . 51 …

java2s.com

http://www.java2s.com/Code/JavaAPI/CatalogJavaAPI.htm转载于:https://www.cnblogs.com/reborn2012/p/3326445.html