[讨论] MX1081开发手记....bootloader是可以改掉的.

cl17726   2014-11-16 13:34 楼主
顺便答疑群里有提问,[忘了是谁],程序完全可以替换掉Bootloader.这几天又研究了一下原子哥的DFU升级什么的.   

里面虽然是一个标准的芯片,但是分了几个区段.

  • 0x08000000 - 0x08003FFF 是Bootloader,可以改,调试时候不推荐改.
  • 0x08004000 - 0x0800BFFF 是OTA信息.
  • 0x0800C000 - 0x08060000 是用户自由分配程序区段.
  • 0x08060000 - 0x080C0000 是OTA时候的储存空间.
  • 0x080C0000 - 0x080FFFFF 射频驱动程序,不能改哦.
    那么说,其实在忽略了Bootloader的前提下,我们可以获得更多的空间,我们暂时认为是一个独立的芯片.我们拿到了一块MX1081评估板,但是臃肿的结构,我表示很不满.所以我就建立一个新的工程,现在干净一些,也是为了后来更好查BUG.芯片选STM32F215RG,全局预定义是EMW3161 USE_STDPERIPH_DRIVER.对我日后有用的,都试试.
  • ADC实验从PA6读取模拟的数值,然后采样,串口发送,DMA方式,还控制LED灯闪烁,PA6对应外部模块的第一个旋钮.
  • 按键实验中,按键的短路帽默认是插上了,但是按键好像没想象中好使.
  • I2C测试是把I2C插在I2C1上,I2C的实现方式是查询法!
  • USB实验例子说的是HID
    当然,这只能当是普通MCU,重点是他里面有个WIFI内核,支持AP和Station模式,可以做DHCP客户端或者DHCP服务器,整个MCU的射频内核的操作大概是:

  • 初始化
  • 加入网络
  • mxchipTick
  • 用户程序
    3,4是不断循环执行的,3就是射频内核需要处理自己的一些事,比如看看Wifi状态什么的.所以,主程序结构里面不宜太久才调用一次mxchipTick.


    在程序刚进入时候,mxchipInit,进行初始化,一般都会成功.然后配置参数,并初始化,一般情况如下:
void softAPModeStart(void){    memset(&wNetConfig, 0x0, sizeof(network_InitTypeDef_st));    wNetConfig.wifi_mode = Soft_AP;    strcpy((char *)wNetConfig.wifi_ssid, "uAP");    strcpy((char *)wNetConfig.wifi_key, "");    strcpy((char *)wNetConfig.local_ip_addr, "192.168.0.1");    strcpy((char *)wNetConfig.address_pool_start, "192.168.0.10");    strcpy((char *)wNetConfig.address_pool_end, "192.168.0.177");    wNetConfig.dhcpMode = DHCP_Server;    StartNetwork(&wNetConfig);    printf("Setup soft AP: %s\r\n", wNetConfig.wifi_ssid);}    当然也可以初始化成Station:

void stationModeStart(void){    memset(&wNetConfig, 0x0, sizeof(network_InitTypeDef_st));    wNetConfig.wifi_mode = Station;    strcpy((char *)wNetConfig.wifi_ssid, AP_NAME);    strcpy((char *)wNetConfig.wifi_key, AP_PASSWORD);    wNetConfig.dhcpMode = DHCP_Client;    StartNetwork(&wNetConfig);    printf("connect to %s.....\r\n", wNetConfig.wifi_ssid);}    然后在里面该怎么就怎么.比如DNS,就gethostbyname,这样说起来,其实做得还不错的,简化了很多开发步骤.



回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复