日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 大橙子瘋嵌入式


前言

作為嵌入式的軟件開(kāi)發(fā)工程師,基本都會(huì)對(duì)參數(shù)的概念都不會(huì)陌生。

很多功能使用的變量都需要在程序運(yùn)行過(guò)程中改變,掉電重啟后還需要恢復(fù)原來(lái)的狀態(tài),就需要這些變量能夠保存起來(lái),寫入flash或eeprom等儲(chǔ)存芯片中,待程序重新運(yùn)行時(shí)讀取,這部分保存起來(lái)的變量通常稱為參數(shù)。

參數(shù)可區(qū)分功能性配置、性能配置軟件內(nèi)部實(shí)現(xiàn);功能性配置和性能配置參數(shù)是指給提供客戶關(guān)閉功能,配置性能的配置。

  • 軟件內(nèi)部實(shí)現(xiàn)的參數(shù)配置,一般用于研發(fā)內(nèi)部客戶或維護(hù)部門故障排查和維護(hù),不隨意提供給外部。

  • 外部的功能和性能配置參數(shù),可提供客戶進(jìn)行修改,部分對(duì)于重要參數(shù)或因?yàn)樯虅?wù)原因,一般建議提供加密方法(不可見(jiàn)或超級(jí)管理員密碼設(shè)置),不建議讓客戶隨意配置

當(dāng)然,參數(shù)并不是簡(jiǎn)單的保存和讀取恢復(fù),由于參數(shù)通常關(guān)系到軟件的運(yùn)行狀態(tài),因此對(duì)參數(shù)這部分的處理自然與普通變量有所不同,通常需要對(duì)參數(shù)從儲(chǔ)存芯片中讀取后做校驗(yàn),防止掉電寫入后的數(shù)據(jù)發(fā)生變化;

常規(guī)做法就是判斷參數(shù)的取值范圍,一旦超出范圍,就需要缺省值恢復(fù),防止程序運(yùn)行出現(xiàn)嚴(yán)重異常問(wèn)題。

介紹

參數(shù)管理框架代碼,代碼主要特點(diǎn)有:

  • 采用表驅(qū)動(dòng)方式統(tǒng)一管理所有參數(shù),包括缺省值、最小值和最大值等

  • 采用宏定義快速注冊(cè)和添加參數(shù)進(jìn)行管理

  • 支持基本類型參數(shù)和字符串參數(shù)

  • 支持序列化和反序列化,便于保存和讀取校驗(yàn)

  • 可通過(guò)串口協(xié)議或其他協(xié)議調(diào)用接口修改參數(shù)

代碼示例

部分demo代碼如下,閱讀全部代碼可下載源碼。

PARAM_DEFINE (test, PARAM_INT16, 10, -100, 100);
PARAM_DEFINE (test_2, PARAM_UINT16, 20, 0, 100);
PARAM_DEFINE (test_3, PARAM_DOUBLE, 3.15, -10.5, 10.5);
PARAM_DEFINE_STR (test_str, 10, "abcdef"); const ParamInfo_t sg_tParamList[]=
{
 PARAM_REG(1, test, PARAM_INT16),
 PARAM_REG(2, test_2, PARAM_UINT16),
 PARAM_REG(3, test_3, PARAM_DOUBLE),
 PARAM_STR_REG(4, test_str),
}; static ParamTable_t sg_tParamTable = {sg_tParamList, sizeof(sg_tParamList) / sizeof(sg_tParamList[0])}; int main () { uint32_t data = 16; double fdata = 7.25; uint8_t databuf[8];

 InitAllParam();

 ShowAllParam(); printf("\nModify: \n"); memcpy(databuf, &data, sizeof(data));
 ModifyByName("test_2", databuf); memcpy(databuf, &fdata, sizeof(fdata));
 ModifyByName("test_3", databuf);

 ShowAllParam(); printf("\nReset: \n");
 ResetParam();
 ShowAllParam(); return 0;
}

下載鏈接

下載鏈接(點(diǎn)擊閱讀原文):https://gitee.com/const-zpc/param/tree/master




本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉