123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #include "include.h"
- #include "bsp_param.h"
- #define TRACE_EN 0
- #if TRACE_EN
- #define TRACE(...) printf(__VA_ARGS__)
- #else
- #define TRACE(...)
- #endif
- #define CM_SIZE 0x2000 //参数区至少8k
- #define CM_START (FLASH_SIZE - CM_SIZE)
- void param_sync_hook(void);
- u32 bsp_get_rand_key(void);
- typedef void (*param_write_func)(u8 *buf, u32 addr, uint len);
- typedef void (*param_read_func)(u8 *buf, u32 addr, uint len);
- ///CM Init时,判断该Page参数是否有效,有效则加载
- bool cm_loadparam(void *buff, uint page)
- {
- return true;
- }
- ///CM Init时,如果找不到有效的参数,则进行出厂值设置
- void cm_factory(void *buff, uint page)
- {
- u8 *buf = buff;
- memset(buf, 0, 250);
- TRACE("cm_factory: %d\n", page);
- if (page == SYS_CM_PAGE_NUM) {
- //系统参数初始化
- sys_cb.vol = SYS_INIT_VOLUME + 1;
- if (xcfg_cb.lang_id == LANG_EN_ZH) {
- sys_cb.lang_id = 0; //出厂默认英文
- } else if (xcfg_cb.lang_id == LANG_ZH_EN) {
- sys_cb.lang_id = 1; //出厂默认中文
- } else {
- sys_cb.lang_id = xcfg_cb.lang_id;
- }
- buf[PARAM_SYS_VOL] = sys_cb.vol;
- if (sys_cb.lang_id) {
- buf[PARAM_LANG_ID] = BIT(3);
- }
- PUT_LE32(buf + PARAM_RANDOM_KEY, sys_cb.rand_seed);
- }
- }
- void cm_param_init(void)
- {
- param_cb.read = (param_read_func)cm_read;
- param_cb.write = (param_write_func)cm_write;
- param_cb.sync = cm_sync;
- cm_init(MAX_CM_PAGE, CM_START, CM_SIZE);
- sys_cb.cm_factory = 0;
- }
|