Browse Source

sd卡和norflash都能检测到,但mount还有些问题

guohui 1 year ago
parent
commit
4f96f63ce8

+ 1 - 3
f407/applications/board.h

@@ -116,14 +116,12 @@ extern "C"
 #define BSP_USING_ETH
 
 #define BSP_USING_SDIO
-
+#define BSP_USING_SDCARD
 
 #define BSP_USING_SPI
 #define BSP_USING_SPI1
 #define BSP_USING_SPI2
 
-#define BSP_USING_SDCARD
-
 #define PHY_USING_YT8512C
 
 #define BSP_RTC_USING_LSE

+ 1 - 1
f407/applications/breaker.c

@@ -1,5 +1,5 @@
 #include <stdlib.h>
-#include <time.h>
+#include "sys/time.h"
 #include "mb.h"
 #include "lock.h"
 #include "list.h"

+ 1 - 0
f407/applications/cfg.h

@@ -14,6 +14,7 @@
     #define POWER_PORT      "uart2"
     #define SENSOR_PORT     "uart3"
     #define CONSOLE_PORT    "uart1"
+    #define CASCADE_PORT    "uart6"
     
     #define NOR_PORT        "spi1"
 #else

+ 7 - 1
f407/applications/datadef.h

@@ -204,7 +204,7 @@ typedef struct {
     int32_t             flip_time;
     uint8_t             led;
     uint8_t             beep;
-    uint8_t             rotate;
+    uint16_t            rotate;
 }misc_data_t;
 
 typedef struct {
@@ -676,8 +676,14 @@ typedef struct {
 #define INI_NAME        "smartPDU.ini"
 #define INF_NAME        "PDUInfo.txt"
 
+#if 1
 #define DB_PATH         SD_PATH
 #define CFG_PATH        NOR_PATH
+#else
+#define DB_PATH         ROOT_PATH
+#define CFG_PATH        ROOT_PATH
+#endif
+
 
 #endif
 

+ 3 - 2
f407/applications/db.c

@@ -934,17 +934,18 @@ int db_init(void)
 {
     int i,r;
     sqlite3 *db=NULL;
-    char tmp[50],path[100];
+    char path[100];
     db_handle_t *h=&dbHandle;
     char *errmsg=NULL;
     char *ext[DB_MAX]={"cfg","rec"};
     
     memset(h, 0, sizeof(db_handle_t));
+    sqlite3_initialize();
     for(i=0; i<DB_MAX; i++) {
         sprintf(path, "%s/%s_%s.db", DB_PATH, DB_NAME, ext[i]);
         r = sqlite3_open(path, &h->db[i]);
         if(r != SQLITE_OK) {
-            LOGE("___db[%d] init failed\n", i);
+            LOGE("___%s open failed\n", path);
             return -1 ;
         }
         sqlite3_exec(h->db[i], "PRAGMA cache_size=0;" , NULL, NULL, NULL);

+ 16 - 16
f407/applications/fs.c

@@ -33,9 +33,8 @@ typedef struct {
 
 
 static mnt_info_t MNT_INFO[FS_DEV_MAX]={
-    //{FS_DEV_SD, SD_DEV,  SD_PATH,  "elm"},
-    {FS_DEV_SD, "sd",  "/",  "elm"},
-    {FS_DEV_NOR, NOR_DEV, NOR_PATH, "lfs"},
+    {FS_DEV_SD,  SD_DEV,  SD_PATH,  "elm"},
+    {FS_DEV_NOR, NOR_DEV, NOR_PATH, "elm"},
 };
 
 static int sd_mount(void)
@@ -125,7 +124,7 @@ static int do_mount(fs_handle_t *h, char *dev, int flag)
     int r=0;
     rt_err_t err=0;
     mnt_info_t *info=NULL;
-    rt_device_t devid=NULL;
+    rt_device_t pdev=NULL;
     
     info = get_info(h, dev);
     if(!info) {
@@ -142,21 +141,22 @@ static int do_mount(fs_handle_t *h, char *dev, int flag)
         return 0;
     }
         
-    devid = rt_device_find(info->dev);
-    if(devid) {
+    pdev = rt_device_find(info->dev);
+    if(pdev) {
         if(flag) {
-            r = dfs_mounts(info->dev, info->mpath, info->ftype);
+            r = dfs_mount(info->dev, info->mpath, info->ftype, 0, 0);
             if (r) {
-                r = dfs_mkfs(info->dev, info->ftype);
+                dfs_mkfs(info->dev, info->ftype);
+                r = dfs_mount(info->dev, info->mpath, info->ftype, 0, 0);
                 if(r==0) {
-                    r = dfs_mounts(info->dev, info->mpath, info->ftype);
-                    if(r==0) {
-                        h->mounted[info->id] = 1;
-                    }
+                    h->mounted[info->id] = 1;
+                }
+                else {
+                    LOGD("%s mount failed\n", info->mpath);
                 }
             }
             else {
-                LOGD("%s fs inited\n", info->mpath);
+                LOGD("%s mount ok!\n", info->mpath);
             }
         }
         else {
@@ -201,9 +201,9 @@ int fs_mkdir(char *path)
     char tmp[256];
     char *p = NULL;
     size_t len;
-    mode_t mode=0755;
+    mode_t mode=0x777;
  
-    snprintf(tmp, sizeof(tmp),"%s",path);
+    snprintf(tmp, sizeof(tmp),"%s", path);
     len = strlen(tmp);
     if(tmp[len - 1] == '/')
         tmp[len - 1] = 0;
@@ -226,7 +226,7 @@ int fs_mkdir(char *path)
 int fs_init(void)
 {
     sd_mount();
-    //nor_mount();
+    nor_mount();
     return 0;
 }
 

+ 4 - 3
f407/applications/main.c

@@ -99,11 +99,12 @@ static int user_init(void)
     paras_data_t *p=paras_get();
     modbus_data_t *cas=&p->cas;
     
-    power_init();
+    //power_init();
     db_init();
+    //cascade_init(cas->mode, cas->addr, cas->baud);
+    
+    //web_init();
     
-    web_init();
-    cascade_init(cas->mode, cas->addr, cas->baud);
     return 0;
 }
 

+ 3 - 3
f407/applications/packages/sqlite-v3.19.3/rtthread_io_methods.c

@@ -9,8 +9,8 @@ static int _rtthread_io_read(sqlite3_file *file_id, void *pbuf, int cnt, sqlite3
     assert(cnt > 0);
 
     new_offset = lseek(file->fd, offset, SEEK_SET);
-
-    if (new_offset != offset)
+    
+    if (new_offset!=offset)
     {
         return SQLITE_IOERR_READ;
     }
@@ -60,7 +60,7 @@ static int _rtthread_io_write(sqlite3_file* file_id, const void *pbuf, int cnt,
 
     new_offset = lseek(file->fd, offset, SEEK_SET);
 
-    if (new_offset != offset)
+    if (new_offset!=offset)
     {
         return SQLITE_IOERR_WRITE;
     }

+ 1 - 1
f407/applications/packages/sqlite-v3.19.3/sqlite3.c

@@ -36108,7 +36108,7 @@ static int unixRandomness(sqlite3_vfs *NotUsed, int nBuf, char *zBuf){
   */
   memset(zBuf, 0, nBuf);
   randomnessPid = osGetpid(0);
-#if !defined(SQLITE_TEST) && !defined(SQLITE_OMIT_RANDOMNESS)
+#if!defined(SQLITE_TEST) && !defined(SQLITE_OMIT_RANDOMNESS)
   {
     int fd, got;
     fd = robust_open("/dev/urandom", O_RDONLY, 0);

+ 1 - 1
f407/applications/paras.c

@@ -510,7 +510,7 @@ static int proc_misc(dictionary *dic, int op, misc_data_t *misc)
             r = -1; 
         }
 
-        if(misc->flip_time<=0) {
+        if(misc->flip_time<0) {
             LOGE("___ check misc, flip_time is invalid, must greater than 0\n");
             r = -1; 
         }

+ 29 - 6
f407/applications/rtconfig.h

@@ -99,7 +99,7 @@
 #define FAL_DEBUG 1
 #define FAL_PART_HAS_TABLE_CFG
 #define FAL_USING_SFUD_PORT
-#define FAL_USING_NOR_FLASH_DEV_NAME "W25Q32"
+#define FAL_FLASH_DEV_NAME "w25q32"
 #define RT_USING_MTD_NOR
 
 
@@ -115,16 +115,25 @@
 #define RT_SERIAL_USING_DMA
 #define RT_SERIAL_RB_BUFSZ 64
 #define RT_USING_SDIO
-#define RT_USING_I2C
+#define SDIO_MAX_FREQ 20*1000000
+#define RT_MMCSD_STACK_SIZE (1024*2)
+#define RT_MMCSD_THREAD_PREORITY 22
+#define RT_MMCSD_MAX_PARTITION 16
 #define RT_USING_SPI
+#define RT_USING_SPI_BITOPS
 #define RT_USING_SFUD
+#define RT_SFUD_USING_SFDP
+#define RT_SFUD_USING_FLASH_INFO_TABLE
+#//define RT_SFUD_SPI_MAX_HZ 50000000
+#define RT_USING_I2C
 #define RT_USING_I2C_BITOPS
 #define RT_USING_PIN
-
-#define RT_MMCSD_STACK_SIZE 2048
+#define RT_USING_RTC
+#define RT_USING_KTIME
 
 
 //Timezone and Daylight Saving Time
+#define RT_LIBC_USING_TIME
 #define RT_LIBC_USING_LIGHT_TZ_DST
 #define RT_LIBC_TZ_DEFAULT_HOUR 8
 #define RT_LIBC_TZ_DEFAULT_MIN 0
@@ -234,8 +243,6 @@
 #define RT_USING_DFS_DEVFS
 //#define RT_USING_DFS_ROMFS
 
-#define RT_USING_RTC
-#define RT_USING_KTIME
 #if 1
 #define RT_USING_PTHREADS
 #define RT_USING_POSIX_DELAY
@@ -256,10 +263,26 @@
 #define MBEDTLS_SSL_MAX_CONTENT_LEN 3584
 #define PKG_USING_MBEDTLS_V2281
 
+#define PKG_USING_LITTLEFS
+#define PKG_USING_LITTLEFS_V250
+#define LFS_READ_SIZE 256
+#define LFS_PROG_SIZE 256
+#define LFS_BLOCK_SIZE 4096
+#define LFS_CACHE_SIZE 256
+#define LFS_BLOCK_CYCLES 1
+#define LFS_THREADSAFE
+#define LFS_LOOKAHEAD_MAX 128
+
+
 
 #define NTP_USING_AUTO_SYNC
 #define NETUTILS_NTP_HOSTNAME   "cn.ntp.org.cn"
 //#define NETUTILS_NTP_HOSTNAME2  ""
 //#define NETUTILS_NTP_HOSTNAME3  ""
 
+
+#define RT_DEBUG
+#define RT_DEBUG_DEVICE
+
+
 #endif

+ 1 - 1
f407/applications/ui/lang.h

@@ -3,6 +3,7 @@
 
 enum {
     STR_ID_VER=0,
+    STR_ID_DATE,
     STR_ID_TIME,
     STR_ID_ADDR,
     STR_ID_INPUT,
@@ -25,7 +26,6 @@ enum {
     STR_ID_MASTER,
     STR_ID_SLAVE,
     
-    
     STR_ID_MAX,
 };
 

+ 28 - 13
f407/applications/ui/menu.c

@@ -1,6 +1,5 @@
 #include <string.h>
 #include <unistd.h>
-#include <time.h>
 #include "menu.h"
 #include "lcd.h"
 #include "led.h"
@@ -12,7 +11,9 @@
 #include "lang.h"
 #include "timer.h"
 #include "cfg.h"
+#include <sys/time.h>
 
+#define LINES          5
 #define REFRESH_TIME   300
 //#define TEXT_ALIGN
 
@@ -162,16 +163,21 @@ static void tmr_stop(menu_handle_t *h)
     timer_stop(h->tmr);
     h->tmr = -1;
 }
-static void get_curtime(char *time, int len)
+static void get_date(char *date, int len, struct tm *t)
 {
-    struct tm *t=localtime(NULL);
-    snprintf(time, len, "%02d%/%02d/%02d %02d:%02d:%02d", (t->tm_year+1900)%100, t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec);
+    snprintf(date, len, "%04d%/%02d/%02d", (t->tm_year+1900), t->tm_mon+1, t->tm_mday);
+}
+static void get_time(char *time, int len, struct tm *t)
+{
+    snprintf(time, len, "%02d:%02d:%02d", t->tm_hour, t->tm_min, t->tm_sec);
 }
 
 static void menu_system_paint(menu_handle_t *h, int font1, int font2, int item_h, key_val_t *kv)
 {
-    char time[40],tmp[60];
-
+    char xxx[40],tmp[60];
+    time_t t=time(NULL);
+    struct tm *tm=localtime(&t);
+    
     //lcd_fill(COLOR_BLACK);
     sprintf(tmp, "SmartPDU");
     lcd_draw_string(0, 0, LCD_WIDTH, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_CENTER, VERTICAL_CENTER);
@@ -179,12 +185,16 @@ static void menu_system_paint(menu_handle_t *h, int font1, int font2, int item_h
     sprintf(tmp, "%s:%s", lang_get_str(h->lang, STR_ID_VER), VERSION);
     lcd_draw_string(0, item_h, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 
-    get_curtime(time, sizeof(time));
-    sprintf(tmp, "%s:%s", lang_get_str(h->lang, STR_ID_TIME), time);
+    get_date(xxx, sizeof(xxx), tm);
+    sprintf(tmp, "%s:%s", lang_get_str(h->lang, STR_ID_DATE), xxx);
     lcd_draw_string(0, item_h*2, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
-
-    sprintf(tmp, "IP:%s", "11.11.11.11");//getLocalIpAddress("eth0"));
+    
+    get_time(xxx, sizeof(xxx), tm);
+    sprintf(tmp, "%s:%s", lang_get_str(h->lang, STR_ID_TIME), xxx);
     lcd_draw_string(0, item_h*3, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
+
+    sprintf(tmp, "IP:%s", "11.11.11.11");//getLocalIpAddress("e0"));
+    lcd_draw_string(0, item_h*4, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
     //lcd_refresh();
 }
 static void menu_input_paint(menu_handle_t *h, int font1, int font2, int item_h, key_val_t *kv)
@@ -371,8 +381,8 @@ int menu_init(void)
     misc_data_t *misc=&paras_get()->misc;
     
     memset(h, 0, sizeof(menu_handle_t));
-    h->lang = lang_id;
-    //h->tmr = timer_init();
+    h->lang = paras_get()->sys.lang;
+    h->tmr = timer_init();
     h->flip_ms = get_ms();
     h->refresh_ms = get_ms();
     h->uflag |= UFLAG_REFRESH;
@@ -542,6 +552,7 @@ static int menu_modbus_key_handle(menu_handle_t *h, key_val_t *kv)
 static int menu_key_handle(menu_handle_t *h, key_val_t *kv)
 {
     int r=0;
+    int menu_id=h->menu.menu_id;
 
     h->ch_out_max = get_ch_out_max(h);
     switch(h->menu.menu_id) {
@@ -659,6 +670,10 @@ static int menu_key_handle(menu_handle_t *h, key_val_t *kv)
         }
         break;
     }
+    
+    if(menu_id!=h->menu.menu_id) {
+        lcd_fill(COLOR_BLACK);
+    }
 
     return r;
 }
@@ -670,7 +685,7 @@ int menu_handle(void)
     uint64_t cur_ms;
     key_val_t kv;
     int rotate=lcd_get_rotate();
-    int item_h=LCD_HEIGHT/4;
+    int item_h=LCD_HEIGHT/LINES;
     int font1=FONT_24,font2=FONT_24;
     menu_handle_t *h=&mnHandle;
     

+ 2 - 2
f407/applications/web.c

@@ -2,6 +2,7 @@
 #include "mongoose.h"
 #include "thread.h"
 #include "list.h"
+#include "sys/time.h"
 #include "power.h"
 #include "paras.h"
 #include "sensor.h"
@@ -306,11 +307,10 @@ static int ws_handle(web_handle_t *h, pkt_hdr_t *hdr, mg_conn_t *c)
                     system_data_t *sys=(system_data_t*)hdr->data;
                     if(sys->lang<LANG_ID_MAX && sys->lang!=para->sys.lang) {
                         para->sys.lang = sys->lang;
-                        //set lang
                     }
                     if(sys->tzone<LANG_ID_MAX && sys->tzone!=para->sys.tzone) {
                         para->sys.tzone = sys->tzone;
-                        //set tzone
+                        rt_tz_set(para->sys.tzone*3600);
                     }
                     
                     if(flag) {

+ 0 - 3
f407/drivers/drv/include/drv_sdio.h

@@ -35,9 +35,6 @@
 #define SDIO_BUFF_SIZE       4096
 #define SDIO_ALIGN_LEN       32
 
-#ifndef SDIO_MAX_FREQ
-#define SDIO_MAX_FREQ        (1000000)
-#endif
 
 #ifndef SDIO_BASE_ADDRESS
 #define SDIO_BASE_ADDRESS    (0x40012800U)

File diff suppressed because it is too large
+ 300 - 296
f407/project/app/app.uvoptx


+ 5 - 0
f407/project/app/app.uvprojx

@@ -1489,6 +1489,11 @@
               <FileType>1</FileType>
               <FilePath>..\..\applications\packages\littlefs-latest\lfs.c</FilePath>
             </File>
+            <File>
+              <FileName>lfs.h</FileName>
+              <FileType>5</FileType>
+              <FilePath>..\..\applications\packages\littlefs-latest\lfs.h</FilePath>
+            </File>
             <File>
               <FileName>lfs_crc.c</FileName>
               <FileType>1</FileType>

+ 2 - 3
f407/rt-thread/components/fal/samples/porting/fal_cfg.h

@@ -15,7 +15,6 @@
 #include <board.h>
 
 #define MB  (1024*1024)
-#define NOR_FLASH_DEV_NAME             "W25Q32"
 
 /* ===================== Flash device Configuration ========================= */
 extern struct fal_flash_dev nor_flash0;
@@ -30,8 +29,8 @@ extern struct fal_flash_dev nor_flash0;
 /* partition table */
 #define FAL_PART_TABLE                                                \
 {                                                                     \
-    {FAL_PART_MAGIC_WORD, "nor", NOR_FLASH_DEV_NAME,  0,    1*MB, 0}, \
-    {FAL_PART_MAGIC_WORD, "nor", NOR_FLASH_DEV_NAME,  1*MB, 3*MB, 0}, \
+    {FAL_PART_MAGIC_WORD, "nor", FAL_FLASH_DEV_NAME,  0,    1*MB, 0}, \
+    {FAL_PART_MAGIC_WORD, "nor", FAL_FLASH_DEV_NAME,  1*MB, 3*MB, 0}, \
 }
 #endif /* FAL_PART_HAS_TABLE_CFG */
 

+ 5 - 5
f407/rt-thread/components/fal/samples/porting/fal_flash_sfud_port.c

@@ -17,8 +17,8 @@
 #include <spi_flash_sfud.h>
 #endif
 
-#ifndef FAL_USING_NOR_FLASH_DEV_NAME
-#define FAL_USING_NOR_FLASH_DEV_NAME             "W25Q32"
+#ifndef FAL_FLASH_DEV_NAME
+#define FAL_FLASH_DEV_NAME             "w25q32"
 #endif
 
 static int init(void);
@@ -29,7 +29,7 @@ static int erase(long offset, size_t size);
 static sfud_flash_t sfud_dev = NULL;
 struct fal_flash_dev nor_flash0 =
 {
-    .name       = FAL_USING_NOR_FLASH_DEV_NAME,
+    .name       = FAL_FLASH_DEV_NAME,
     .addr       = 0,
     .len        = 4 * 1024 * 1024,
     .blk_size   = 64*1024,
@@ -42,7 +42,7 @@ static int init(void)
 
 #ifdef RT_USING_SFUD
     /* RT-Thread RTOS platform */
-    sfud_dev = rt_sfud_flash_find_by_dev_name(FAL_USING_NOR_FLASH_DEV_NAME);
+    sfud_dev = rt_sfud_flash_find_by_dev_name(FAL_FLASH_DEV_NAME);
 #else
     /* bare metal platform */
     extern sfud_flash sfud_norflash0;
@@ -97,7 +97,7 @@ static int erase(long offset, size_t size)
 static int rt_hw_spi_flash_init(void)
 {
     rt_hw_spi_device_attach("spi1", "spi1.0", GET_PIN(B, 6));
-    if (RT_NULL == rt_sfud_flash_probe("W25Q32", "spi1.0")) {
+    if (RT_NULL == rt_sfud_flash_probe(FAL_FLASH_DEV_NAME, "spi1.0")) {
         return -RT_ERROR;
     };
     return RT_EOK;

+ 4 - 4
f407/tools/web/JS/data.js

@@ -532,8 +532,8 @@ function bin_to_misc(bin) {
     length += 1;
     
     tmp = new DataView(bin, length);
-    this.rotate = tmp.getUint8(0,true);
-    length += 1;
+    this.rotate = tmp.getUint16(0,true);
+    length += 2;
 
     this.len = length;
 }
@@ -1022,8 +1022,8 @@ function misc_to_bin(js) {
     length += 1;
     
     tmp = new DataView(buffer, length);
-    tmp.setUint8(0,js.rotate,true);
-    length += 1;
+    tmp.setUint16(0,js.rotate,true);
+    length += 2;
     
     return buffer;
 }