Răsfoiți Sursa

change: 适配Air102/W801, 原有的AIR101/AIR103宏仅用于区分Flash大小

Wendal Chen 4 ani în urmă
părinte
comite
f754f7dce7

+ 6 - 6
app/port/luat_adc_air101.c

@@ -17,14 +17,14 @@ int luat_adc_open(int ch, void *args)
     case 1:
         wm_adc_config(ch);
         break;
-#ifdef AIR103
+// #ifdef AIR103
     case 2:
         wm_adc_config(ch);
         break;
     case 3:
         wm_adc_config(ch);
         break;
-#endif
+// #endif
     case 10:
         return 0; // 温度传感器
     case 11:
@@ -47,14 +47,14 @@ int luat_adc_read(int ch, int *val, int *val2)
     case 1:
         voltage = adc_get_inputVolt2(ch, val);
         break;
-#ifdef AIR103
+// #ifdef AIR103
     case 2:
         voltage = adc_get_inputVolt2(ch, val);
         break;
     case 3:
         voltage = adc_get_inputVolt2(ch, val);
         break;
-#endif
+// #endif
     case 10:
         voltage = adc_temp();
         *val = voltage;
@@ -90,14 +90,14 @@ int luat_adc_close(int ch)
     case 1:
         tls_io_cfg_set(WM_IO_PA_04, WM_IO_OPTION5);
         break;
-#ifdef AIR103
+// #ifdef AIR103
     case 2:
         tls_io_cfg_set(WM_IO_PA_03, WM_IO_OPTION5);
         break;
     case 3:
         tls_io_cfg_set(WM_IO_PA_02, WM_IO_OPTION5);
         break;
-#endif
+// #endif
     case 10:
         break; // 温度
     case 11:

+ 15 - 15
app/port/luat_conf_bsp.h

@@ -5,7 +5,7 @@
 #define LUAT_BSP_VERSION "V0005"
 
 // Air101 与 Air103 的Flash大小有差异,需要区分
-#define AIR101
+#define AIR103
 
 // 文件系统大小, 一般不需要修改
 // 若需要增加,必须等于 (112+64*N), 其中N为正整数.
@@ -24,18 +24,18 @@
 // 外设,按需启用, 最起码启用uart和wdt库
 #define LUAT_USE_UART 1
 #define LUAT_USE_GPIO 1
-#define LUAT_USE_I2C  1
+// #define LUAT_USE_I2C  1
 #define LUAT_USE_SPI  1
-#define LUAT_USE_ADC  1
+// #define LUAT_USE_ADC  1
 #define LUAT_USE_PWM  1
 #define LUAT_USE_WDT  1
 #define LUAT_USE_PM  1
 #define LUAT_USE_MCU  1
 // hwtimer库对lua代码没多少用处,通常禁用
 // #define LUAT_USE_HWTIMER  1
-#define LUAT_USE_RTC 1
+// #define LUAT_USE_RTC 1
 // SDIO 仅支持TF/SD卡的挂载
-#define LUAT_USE_SDIO 1
+// #define LUAT_USE_SDIO 1
 // 段码屏/段式屏, 按需启用
 // #define LUAT_USE_LCDSEG 1
 
@@ -46,29 +46,29 @@
 #define LUAT_USE_ZBUFF  1
 #define LUAT_USE_PACK  1
 // #define LUAT_USE_GNSS  1
-#define LUAT_USE_FS  1
-#define LUAT_USE_SENSOR  1
-#define LUAT_USE_SFUD  1
-#define LUAT_USE_STATEM 1
+// #define LUAT_USE_FS  1
+// #define LUAT_USE_SENSOR  1
+// #define LUAT_USE_SFUD  1
+// #define LUAT_USE_STATEM 1
 // 性能测试,跑完就是玩,不要与lvgl一起启用,生产环境的固件别加这个库
 // #define LUAT_USE_COREMARK 1
 
 //----------------------------
 // 高通字体, 需配合芯片使用
-#define LUAT_USE_GTFONT 1
-#define LUAT_USE_GTFONT_UTF8
+// #define LUAT_USE_GTFONT 1
+// #define LUAT_USE_GTFONT_UTF8
 
 //----------------------------
 // 高级功能, 其中shell是推荐启用, 除非你打算uart0也读数据
-#define LUAT_USE_SHELL 1
+// #define LUAT_USE_SHELL 1
 // NIMBLE 是蓝牙功能, 名为BLE, 但绝非低功耗.
-#define LUAT_USE_NIMBLE 1
+// #define LUAT_USE_NIMBLE 1
 // FDB 提供kv数据库, 与nvm库类似
-#define LUAT_USE_FDB 1
+// #define LUAT_USE_FDB 1
 // 多虚拟机支持,实验性,一般不启用
 // #define LUAT_USE_VMX 1
 
-#define LUAT_USE_DBG
+// #define LUAT_USE_DBG
 
 //---------------------
 // UI

+ 55 - 55
app/port/luat_pwm_air101.c

@@ -58,23 +58,23 @@ int luat_pwm_open(int channel, size_t period, size_t pulse,int pnum) {
     int ret = -1;
     switch (channel)
 	{
-#ifdef AIR101
-		case 0:
-			wm_pwm0_config(WM_IO_PB_00);
-			break;
-		case 1:
-			wm_pwm1_config(WM_IO_PB_01);
-			break;
-		case 2:
-			wm_pwm2_config(WM_IO_PB_02);
-			break;
-		case 3:
-			wm_pwm3_config(WM_IO_PB_03);
-			break;
-		case 4:
-			wm_pwm4_config(WM_IO_PA_07);
-			break;
-#else
+// #ifdef AIR101
+// 		case 0:
+// 			wm_pwm0_config(WM_IO_PB_00);
+// 			break;
+// 		case 1:
+// 			wm_pwm1_config(WM_IO_PB_01);
+// 			break;
+// 		case 2:
+// 			wm_pwm2_config(WM_IO_PB_02);
+// 			break;
+// 		case 3:
+// 			wm_pwm3_config(WM_IO_PB_03);
+// 			break;
+// 		case 4:
+// 			wm_pwm4_config(WM_IO_PA_07);
+// 			break;
+// #else
 		case 00:
 			wm_pwm0_config(WM_IO_PB_00);
 			break;
@@ -135,14 +135,14 @@ int luat_pwm_open(int channel, size_t period, size_t pulse,int pnum) {
 		case 34:
 			wm_pwm4_config(WM_IO_PB_26);
 			break;
-#endif
+// #endif
 		// TODO 再选一组PWM0~PWM4
 		default:
 			break;
 	}
-#ifdef AIR103
+// #ifdef AIR103
 	channel = channel%10;
-#endif
+// #endif
     tls_pwm_stop(channel);
     ret = tls_pwm_init(channel, period, pulse*2.55, pnum);
     if(ret != WM_SUCCESS)
@@ -157,38 +157,38 @@ int luat_pwm_capture(int channel,int freq) {
 	tls_sys_clk sysclk;
 	tls_sys_clk_get(&sysclk);
     switch (channel){
-#ifdef AIR101
-		case 0:
-			memset(pwmDmaCap0, 0, sizeof(pwmDmaCap0)/sizeof(char));
-			wm_pwm0_config(WM_IO_PB_00);
-			tls_pwm_stop(channel);
-			dmaCh = tls_dma_request(1, TLS_DMA_FLAGS_CHANNEL_SEL(TLS_DMA_SEL_PWM_CAP0) | TLS_DMA_FLAGS_HARD_MODE);
-			DmaDesc.src_addr = HR_PWM_CAPDAT;
-			DmaDesc.dest_addr = (unsigned int)pwmDmaCap0;
-			DmaDesc.dma_ctrl = TLS_DMA_DESC_CTRL_DEST_ADD_INC | TLS_DMA_DESC_CTRL_BURST_SIZE1 | TLS_DMA_DESC_CTRL_DATA_SIZE_WORD | TLS_DMA_DESC_CTRL_TOTAL_BYTES(400);
-			DmaDesc.valid = TLS_DMA_DESC_VALID;
-			DmaDesc.next = NULL;
-			tls_dma_start(dmaCh, &DmaDesc, 0);
-			tls_dma_irq_register(dmaCh, pwm_dma_callback, (void*)channel, TLS_DMA_IRQ_TRANSFER_DONE);
-			tls_pwm_cap_init(channel, sysclk.apbclk*UNIT_MHZ/256/freq, DISABLE, WM_PWM_CAP_DMA_INT);
-			tls_pwm_start(channel); 
-			return 0;
-		case 4:
-			memset(pwmDmaCap4, 0, sizeof(pwmDmaCap4)/sizeof(char));
-			wm_pwm4_config(WM_IO_PA_07);
-			tls_pwm_stop(channel);
-			dmaCh = tls_dma_request(1, TLS_DMA_FLAGS_CHANNEL_SEL(TLS_DMA_SEL_PWM_CAP0) | TLS_DMA_FLAGS_HARD_MODE);
-			DmaDesc.src_addr = HR_PWM_CAPDAT;
-			DmaDesc.dest_addr = (unsigned int)pwmDmaCap4;
-			DmaDesc.dma_ctrl = TLS_DMA_DESC_CTRL_DEST_ADD_INC | TLS_DMA_DESC_CTRL_BURST_SIZE1 | TLS_DMA_DESC_CTRL_DATA_SIZE_WORD | TLS_DMA_DESC_CTRL_TOTAL_BYTES(400);
-			DmaDesc.valid = TLS_DMA_DESC_VALID;
-			DmaDesc.next = NULL;
-			tls_dma_start(dmaCh, &DmaDesc, 0);
-			tls_dma_irq_register(dmaCh, pwm_dma_callback, (void*)channel, TLS_DMA_IRQ_TRANSFER_DONE);
-			tls_pwm_cap_init(channel, sysclk.apbclk*UNIT_MHZ/256/freq, DISABLE, WM_PWM_CAP_DMA_INT);
-			tls_pwm_start(channel); 
-			return 0;
-#else
+// #ifdef AIR101
+// 		case 0:
+// 			memset(pwmDmaCap0, 0, sizeof(pwmDmaCap0)/sizeof(char));
+// 			wm_pwm0_config(WM_IO_PB_00);
+// 			tls_pwm_stop(channel);
+// 			dmaCh = tls_dma_request(1, TLS_DMA_FLAGS_CHANNEL_SEL(TLS_DMA_SEL_PWM_CAP0) | TLS_DMA_FLAGS_HARD_MODE);
+// 			DmaDesc.src_addr = HR_PWM_CAPDAT;
+// 			DmaDesc.dest_addr = (unsigned int)pwmDmaCap0;
+// 			DmaDesc.dma_ctrl = TLS_DMA_DESC_CTRL_DEST_ADD_INC | TLS_DMA_DESC_CTRL_BURST_SIZE1 | TLS_DMA_DESC_CTRL_DATA_SIZE_WORD | TLS_DMA_DESC_CTRL_TOTAL_BYTES(400);
+// 			DmaDesc.valid = TLS_DMA_DESC_VALID;
+// 			DmaDesc.next = NULL;
+// 			tls_dma_start(dmaCh, &DmaDesc, 0);
+// 			tls_dma_irq_register(dmaCh, pwm_dma_callback, (void*)channel, TLS_DMA_IRQ_TRANSFER_DONE);
+// 			tls_pwm_cap_init(channel, sysclk.apbclk*UNIT_MHZ/256/freq, DISABLE, WM_PWM_CAP_DMA_INT);
+// 			tls_pwm_start(channel); 
+// 			return 0;
+// 		case 4:
+// 			memset(pwmDmaCap4, 0, sizeof(pwmDmaCap4)/sizeof(char));
+// 			wm_pwm4_config(WM_IO_PA_07);
+// 			tls_pwm_stop(channel);
+// 			dmaCh = tls_dma_request(1, TLS_DMA_FLAGS_CHANNEL_SEL(TLS_DMA_SEL_PWM_CAP0) | TLS_DMA_FLAGS_HARD_MODE);
+// 			DmaDesc.src_addr = HR_PWM_CAPDAT;
+// 			DmaDesc.dest_addr = (unsigned int)pwmDmaCap4;
+// 			DmaDesc.dma_ctrl = TLS_DMA_DESC_CTRL_DEST_ADD_INC | TLS_DMA_DESC_CTRL_BURST_SIZE1 | TLS_DMA_DESC_CTRL_DATA_SIZE_WORD | TLS_DMA_DESC_CTRL_TOTAL_BYTES(400);
+// 			DmaDesc.valid = TLS_DMA_DESC_VALID;
+// 			DmaDesc.next = NULL;
+// 			tls_dma_start(dmaCh, &DmaDesc, 0);
+// 			tls_dma_irq_register(dmaCh, pwm_dma_callback, (void*)channel, TLS_DMA_IRQ_TRANSFER_DONE);
+// 			tls_pwm_cap_init(channel, sysclk.apbclk*UNIT_MHZ/256/freq, DISABLE, WM_PWM_CAP_DMA_INT);
+// 			tls_pwm_start(channel); 
+// 			return 0;
+// #else
 		case 00:
 			channel = channel%10;
 			memset(pwmDmaCap0, 0, sizeof(pwmDmaCap0)/sizeof(char));
@@ -348,7 +348,7 @@ int luat_pwm_capture(int channel,int freq) {
 			tls_pwm_cap_init(channel, sysclk.apbclk*UNIT_MHZ/256/freq, DISABLE, WM_PWM_CAP_DMA_INT);
 			tls_pwm_start(channel); 
 			return 0;
-#endif
+// #endif
 		// TODO 再选一组PWM0~PWM4
 		default:
 			break;
@@ -359,9 +359,9 @@ int luat_pwm_capture(int channel,int freq) {
 // @return -1 关闭失败。 0 关闭成功
 int luat_pwm_close(int channel) {
     int ret = -1;
-#ifdef AIR103
+// #ifdef AIR103
 	channel = channel%10;
-#endif
+// #endif
     ret = tls_pwm_stop(channel);
     if(ret != WM_SUCCESS)
         return ret;

+ 2 - 2
app/port/luat_sdio_air101.c

@@ -21,12 +21,12 @@ int luat_sdio_init(int id){
 		wm_sdio_host_config(0);
 		return 0;
 	}
-#ifdef AIR103
+// #ifdef AIR103
 	else if (id == 1) {
 		wm_sdio_host_config(1);
 		return 0;
 	}
-#endif
+// #endif
 	return -1;
 }
 

+ 4 - 4
app/port/luat_spi_air101.c

@@ -35,7 +35,7 @@ int luat_spi_bus_setup(luat_spi_device_t* spi_dev){
         wm_spi_do_config(WM_IO_PB_05);
         return 0;
     }
-    #ifdef AIR103
+    // #ifdef AIR103
     else if (bus_id == 1) { // 本质上是mode=1,不是spi1,该模式下psram可用
 	    wm_spi_ck_config(WM_IO_PB_15);
 	    wm_spi_di_config(WM_IO_PB_16);
@@ -46,7 +46,7 @@ int luat_spi_bus_setup(luat_spi_device_t* spi_dev){
 	    wm_spi_di_config(WM_IO_PB_25);
 	    wm_spi_do_config(WM_IO_PB_26);
     }
-    #endif
+    // #endif
     else{
         LLOGD("spi_bus error");
         return -1;
@@ -68,7 +68,7 @@ int luat_spi_setup(luat_spi_t* spi) {
             wm_spi_di_config(WM_IO_PB_03);
             wm_spi_do_config(WM_IO_PB_05);
     }
-    #ifdef AIR103
+    // #ifdef AIR103
     else if (spi->id == 1) { // 本质上是mode=1,不是spi1,该模式下psram可用
         if (spi->cs == 0 || spi->cs == WM_IO_PB_14)
 	        wm_spi_cs_config(WM_IO_PB_14);
@@ -83,7 +83,7 @@ int luat_spi_setup(luat_spi_t* spi) {
 	    wm_spi_di_config(WM_IO_PB_25);
 	    wm_spi_do_config(WM_IO_PB_26);
     }
-    #endif
+    // #endif
     else {
         return -1;
     }

+ 8 - 7
readme.md

@@ -1,26 +1,27 @@
 # Air101/Air103 固件源码库
 
-Air101和Air103是基于平头哥XT804内核设计的soc,使用相同内核的W800和W806同样可以使用本仓库代码。
+Air101和Air103是基于平头哥XT804内核设计的soc
 
-W806对应Air103,可以看Air103相关教程
+使用相同内核的`W800/W801/W806`同样可以使用本仓库代码。
+
+* W806对应Air103,可以看Air103相关教程
+* W801与W806的区别只是Flash不同, Air101/Air103的固件均可使用
+* 这个库存放的是适配LuatOS的代码, 同时也支持做成C开发包使用
 
 ## 编译说明
 见wiki编译教程[Air101 / Air103 - LuatOS 文档](https://wiki.luatos.com/develop/compile/Air101.html)
 
-## lib编译
-
-全部编译比较耗时,因此将lib部分预编译进行使用,平时仅编译app部分即可,当需要改动lib部分时需要在lib目录下执行xmake -j1 -P即可。**注意:编译lib后一定要将build删掉重新编译app**
-
 ## Air101/Air103 相关资料
 
 * air101: https://luatos.com/t/air101
 * air103: https://luatos.com/t/air103
+* LuatOS主库: https://gitee.com/openLuat/LuatOS
 
 ## 如需帮助
 
 LuatOS/Air101/Air103问题请加QQ群: 1061642968 或提交issue
 
-W806问题请加QQ群:739265828
+W806/W801问题请加QQ群:739265828
 
 ## 授权协议