RTOS_SDK编译-增加device文件

在RTOS SDK下,除了用户程序入口函数名字是user_init()以外, 
整个的编程感觉很像linux(当然具体是非常不一样的)下编程,也有tcp/ip协议栈,就像传统的C开发。

1)固件代码准备 
一般来说,固件是和具体的业务应用有关,这里以examples/project_template为例, 
仅仅输出SDK的版本信息和hello world。

ESP8266_RTOS_SDK 默认使用 UART0 打印调试信息,默认波特率为 74880。 
这种波特率很多软件都不支持,用起来颇为不便,因此改为115200。

修改user/user_main.c如下

在头文件引入处增加 
#include “uart.h”

修改后的代码

#include "uart.h"

...

void user_init(void)
{
    // 115200
    UART_ConfigTypeDef  uart_config;
    uart_config.baud_rate               =   BIT_RATE_115200;
    uart_config.data_bits               =   UART_WordLength_8b;
    uart_config.parity                  =   USART_Parity_None;
    uart_config.stop_bits               =   USART_StopBits_1;
    uart_config.flow_ctrl               =   USART_HardwareFlowControl_None;
    uart_config.UART_RxFlowThresh       =   120;
    uart_config.UART_InverseMask        =   UART_None_Inverse;
    UART_ParamConfig(UART0, &uart_config);

    printf("SDK version:%s¥n", system_get_sdk_version());
    printf("hello world!¥n");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

Makefile 
需要在LINKFLAGS_eagle.app.v6定义中增加【-ldriver】, 以链接uart的库。

LINKFLAGS_eagle.app.v6 = ¥
    -L$(SDK_PATH)/lib        ¥
    -Wl,--gc-sections   ¥
    -nostdlib   ¥
    -T$(LD_FILE)   ¥
    -Wl,--no-check-sections ¥
    -u call_user_start  ¥
    -Wl,-static                     ¥
    -Wl,--start-group                   ¥
    -lcirom ¥
    -lcrypto    ¥
    -lespconn   ¥
    -lespnow    ¥
    -lfreertos  ¥
    -lgcc                   ¥
    -lhal                   ¥
    -ljson  ¥
    -llwip  ¥
    -lmain  ¥
    -lmesh  ¥
    -lmirom ¥
    -lnet80211  ¥
    -lnopoll    ¥
    -lphy   ¥
    -lpp    ¥
    -lpwm   ¥
    -lsmartconfig   ¥
    -lspiffs    ¥
    -lssl   ¥
    -lwpa   ¥
    -lwps       ¥
    -ldriver        ¥
    $(DEP_LIBS_eagle.app.v6)                    ¥
    -Wl,--end-group
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

2)环境变量设置

#指示RTOSSDK路径
export SDK_PATH=/绝对路径/.../ESP8266_RTOS_SDK
#存放生成的固件
export BIN_PATH=/绝对路径/fireware-bin
  • 1
  • 2
  • 3
  • 4

4) 编译 
和NonOS SDK是一样的,为简单起见,这里编译的是Non-FOTA类型的固件,也就是所谓Eagle固件。

执行

bash gen_misc.sh
  • 1

按提示编译,也可用如下命令直接编译。

ESP-01模块(Flash容量为1M,4Mbit)

make COMPILE=gcc BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=QIO SPI_SIZE_MAP=2
  • 1

ESP-12系列(Flash容量为8M,32Mbit)

make COMPILE=gcc BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=QIO SPI_SIZE_MAP=4
  • 1

如果是Nodemcu,则注意SPI选择DIO模式,而非QIO

make COMPILE=gcc BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=DIO SPI_SIZE_MAP=4
  • 1

编译成功后,会在指定的BIN_PATH目录下生成,eagle固件。

No boot needed.
Generate eagle.flash.bin and eagle.irom0text.bin successully in BIN_PATH
eagle.flash.bin-------->0x00000
eagle.irom0text.bin---->0x20000
  • 1
  • 2
  • 3
  • 4

注意下载时,eagle.irom0text.bin的地址为0x20000(通常为0x10000)

串口打开后,可看到如下信息: 
**这里写图片描述**

posted @ 2018-03-21 11:20  XZHDJH  阅读(243)  评论(0)    收藏  举报