修改部分线程内存位置
This commit is contained in:
1 parent
4647022f6f
commit
72bbf093b2
8 files changed
+71
-25
No files matched your search
+15
-3
@@ -70,12 +70,24 @@ static void mb_plc_thread(void *args)//线程服务函数
|
|||||||
rt_thread_mdelay(50);
|
rt_thread_mdelay(50);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
extern struct rt_memheap sram_DTCMRAM;
|
||||||
|
static struct rt_thread dat_plc_thread;
|
||||||
|
static void *dat_plc_stack __attribute__((aligned(4)))= RT_NULL ;
|
||||||
static int mb_rtu_master_startup(void)
|
static int mb_rtu_master_startup(void)
|
||||||
{
|
{
|
||||||
rt_thread_t tid = rt_thread_create("plc_rtu", mb_plc_thread, NULL, 2048, 5, 20);
|
rt_err_t db_err;
|
||||||
|
dat_plc_stack = rt_memheap_alloc(&sram_DTCMRAM, 1024*2);
|
||||||
|
db_err = rt_thread_init(&dat_plc_thread, "plc_rtu", mb_plc_thread, RT_NULL,dat_plc_stack, 1024*2, 10, 10);
|
||||||
|
if(db_err != RT_EOK)
|
||||||
|
{
|
||||||
|
LOG_D("Failed to create SCCM_uart thread!");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
rt_thread_startup(&dat_plc_thread);
|
||||||
|
LOG_I("Create SCCM_uart thread");
|
||||||
|
/*rt_thread_t tid = rt_thread_create("plc_rtu", mb_plc_thread, NULL, 2048, 5, 20);
|
||||||
RT_ASSERT(tid != NULL);
|
RT_ASSERT(tid != NULL);
|
||||||
rt_thread_startup(tid);
|
rt_thread_startup(tid);*/
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
INIT_APP_EXPORT(mb_rtu_master_startup);
|
INIT_APP_EXPORT(mb_rtu_master_startup);
|
||||||
@@ -86,10 +86,23 @@ void uart_thread_entry(void *parameter)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
extern struct rt_memheap sram_DTCMRAM;
|
||||||
|
static struct rt_thread dat_uart_thread;
|
||||||
|
static void *dat_uart_stack __attribute__((aligned(4)))= RT_NULL ;
|
||||||
int start_uart_thread(void)
|
int start_uart_thread(void)
|
||||||
{
|
{
|
||||||
rt_thread_t tid = rt_thread_create("sccm",uart_thread_entry,RT_NULL,2048,11,10);
|
rt_err_t db_err;
|
||||||
|
dat_uart_stack = rt_memheap_alloc(&sram_DTCMRAM, 1024*2);
|
||||||
|
db_err = rt_thread_init(&dat_uart_thread, "sccm", uart_thread_entry, RT_NULL,dat_uart_stack, 1024*2, 11, 10);
|
||||||
|
if(db_err != RT_EOK)
|
||||||
|
{
|
||||||
|
LOG_D("Failed to create SCCM_uart thread!");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
rt_thread_startup(&dat_uart_thread);
|
||||||
|
LOG_I("Create SCCM_uart thread");
|
||||||
|
return 0;
|
||||||
|
/* rt_thread_t tid = rt_thread_create("sccm",uart_thread_entry,RT_NULL,2048,11,10);
|
||||||
if (tid != RT_NULL)
|
if (tid != RT_NULL)
|
||||||
{
|
{
|
||||||
rt_thread_startup(tid);
|
rt_thread_startup(tid);
|
||||||
@@ -100,6 +113,6 @@ int start_uart_thread(void)
|
|||||||
{
|
{
|
||||||
LOG_E("Failed to create SCCM_uart thread!");
|
LOG_E("Failed to create SCCM_uart thread!");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
INIT_COMPONENT_EXPORT(start_uart_thread);
|
INIT_COMPONENT_EXPORT(start_uart_thread);
|
||||||
@@ -574,7 +574,7 @@ void proc_thread_entry(void *parameter)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extern struct rt_memheap sdram_heap;
|
extern struct rt_memheap sram_DTCMRAM;
|
||||||
static struct rt_thread dat_comm_thread;
|
static struct rt_thread dat_comm_thread;
|
||||||
static void *dat_comm_stack __attribute__((aligned(4)))= RT_NULL ;
|
static void *dat_comm_stack __attribute__((aligned(4)))= RT_NULL ;
|
||||||
int data_comm_init(void)
|
int data_comm_init(void)
|
||||||
@@ -587,7 +587,7 @@ int data_comm_init(void)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
dat_comm_stack = rt_memheap_alloc(&sdram_heap, 1024*6);
|
dat_comm_stack = rt_memheap_alloc(&sram_DTCMRAM, 1024*6);
|
||||||
dat_err = rt_thread_init(&dat_comm_thread, "dat_comm", proc_thread_entry, RT_NULL,dat_comm_stack, 1024*6, 15, 10);
|
dat_err = rt_thread_init(&dat_comm_thread, "dat_comm", proc_thread_entry, RT_NULL,dat_comm_stack, 1024*6, 15, 10);
|
||||||
|
|
||||||
if(dat_err != RT_EOK)
|
if(dat_err != RT_EOK)
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ static void return_timeout(struct db_command *cmd);
|
|||||||
static void return_disabled(struct db_command *cmd);
|
static void return_disabled(struct db_command *cmd);
|
||||||
static void handle_db_command(struct db_command *cmd);
|
static void handle_db_command(struct db_command *cmd);
|
||||||
static int callback(void *result_str, int argc, char **argv, char **azColName);
|
static int callback(void *result_str, int argc, char **argv, char **azColName);
|
||||||
|
extern int sqlite3_init_with_sdram_heap(void);
|
||||||
static const char *sql_upgrade_workorder_steps =
|
static const char *sql_upgrade_workorder_steps =
|
||||||
"CREATE TABLE WorkorderSteps (WorkOrder VARCHAR,DYELOT VARCHAR,ProgramID VARCHAR,Program VARCHAR,ReDye INT DEFAULT (0),"
|
"CREATE TABLE WorkorderSteps (WorkOrder VARCHAR,DYELOT VARCHAR,ProgramID VARCHAR,Program VARCHAR,ReDye INT DEFAULT (0),"
|
||||||
"Mode VARCHAR,Step INT,StepID VARCHAR,StepName VARCHAR,ParameterName VARCHAR,P1 DOUBLE,P2 DOUBLE,P3 DOUBLE,"
|
"Mode VARCHAR,Step INT,StepID VARCHAR,StepName VARCHAR,ParameterName VARCHAR,P1 DOUBLE,P2 DOUBLE,P3 DOUBLE,"
|
||||||
@@ -179,6 +180,10 @@ void close_db_immediately(void) {
|
|||||||
void db_sqlite_init_full(void)
|
void db_sqlite_init_full(void)
|
||||||
{
|
{
|
||||||
LOG_D("[DataBase] Init SQLite");
|
LOG_D("[DataBase] Init SQLite");
|
||||||
|
if (sqlite3_init_with_sdram_heap() != 0)
|
||||||
|
{
|
||||||
|
LOG_E("Failed to set memory");
|
||||||
|
}else{ LOG_D("set memory");}
|
||||||
sqlite3_initialize();
|
sqlite3_initialize();
|
||||||
|
|
||||||
if (access(DB_NAME, F_OK) != 0)
|
if (access(DB_NAME, F_OK) != 0)
|
||||||
@@ -190,9 +195,7 @@ void db_sqlite_init_full(void)
|
|||||||
{
|
{
|
||||||
sqlite3_close(g_db);
|
sqlite3_close(g_db);
|
||||||
//限制缓存大小 (100KB)
|
//限制缓存大小 (100KB)
|
||||||
sqlite3_exec(g_db, "PRAGMA cache_size = -50;", 0, 0, 0);
|
sqlite3_exec(g_db, "PRAGMA cache_size = 50;", 0, 0, 0);
|
||||||
//设置临时存储为文件模式 (节省内存)
|
|
||||||
sqlite3_exec(g_db, "PRAGMA temp_store = FILE;", 0, 0, 0);
|
|
||||||
g_db = RT_NULL;
|
g_db = RT_NULL;
|
||||||
}
|
}
|
||||||
return; //
|
return; //
|
||||||
@@ -235,15 +238,15 @@ void db_sqlite_init_full(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
LOG_D("[DataBase] New database created. Creating tables Name (%s)",DB_NAME);
|
LOG_D("[DataBase] New database created. Creating tables Name (%s)",DB_NAME);
|
||||||
|
sqlite3_close(g_db);
|
||||||
|
g_db=RT_NULL;
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
if (sqlite3_open(DB_NAME, &g_db) == SQLITE_OK)
|
if (sqlite3_open(DB_NAME, &g_db) == SQLITE_OK)
|
||||||
{
|
{
|
||||||
//限制缓存大小 (100KB)
|
|
||||||
sqlite3_exec(g_db, "PRAGMA cache_size = -50;", 0, 0, 0);
|
|
||||||
//设置临时存储为文件模式 (节省内存)
|
|
||||||
sqlite3_exec(g_db, "PRAGMA temp_store = FILE;", 0, 0, 0);
|
|
||||||
LOG_D("[DataBase] NAME (%s)",DB_NAME);
|
LOG_D("[DataBase] NAME (%s)",DB_NAME);
|
||||||
|
sqlite3_close(g_db);
|
||||||
|
g_db=RT_NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -276,12 +279,21 @@ static void db_sqlite(void *parameter) {
|
|||||||
|
|
||||||
// 默认启用数据库
|
// 默认启用数据库
|
||||||
db_enabled = RT_TRUE;
|
db_enabled = RT_TRUE;
|
||||||
|
static rt_bool_t first_wait_done = RT_FALSE;
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
// 接收命令
|
// 接收命令
|
||||||
if (rt_mq_recv(db_mq, &cmd, sizeof(struct db_command), RT_WAITING_FOREVER) <= RT_EOK)
|
if (rt_mq_recv(db_mq, &cmd, sizeof(struct db_command), 500) <= RT_EOK)
|
||||||
|
{
|
||||||
|
if (first_wait_done)
|
||||||
|
{
|
||||||
|
first_wait_done = RT_FALSE;
|
||||||
|
//sqlite3_exec(g_db, "PRAGMA shrink_memory;", 0, 0, 0);
|
||||||
|
sqlite3_close(g_db);
|
||||||
|
g_db=RT_NULL;
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
|
}else{first_wait_done = RT_TRUE;}
|
||||||
|
|
||||||
//检查排队超时
|
//检查排队超时
|
||||||
rt_tick_t now = rt_tick_get();
|
rt_tick_t now = rt_tick_get();
|
||||||
@@ -321,10 +333,10 @@ static void db_sqlite(void *parameter) {
|
|||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
//限制缓存大小 (100KB)
|
//限制缓存大小 (100KB)
|
||||||
sqlite3_exec(g_db, "PRAGMA cache_size = -50;", 0, 0, 0);
|
//sqlite3_exec(g_db, "PRAGMA cache_size = -50;", 0, 0, 0);
|
||||||
//设置临时存储为文件模式 (节省内存)
|
//设置临时存储为文件模式 (节省内存)
|
||||||
sqlite3_exec(g_db, "PRAGMA temp_store = FILE;", 0, 0, 0);
|
//sqlite3_exec(g_db, "PRAGMA temp_store = FILE;", 0, 0, 0);
|
||||||
rt_kprintf("Opened database: %s\n", DB_NAME);
|
//rt_kprintf("Opened database: %s\n", DB_NAME);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -422,12 +434,12 @@ void thread_DB_SQLite(void)
|
|||||||
db_err = rt_thread_init(&dat_sqlite_thread, "db_sql", db_sqlite, RT_NULL,dat_sqlite_stack, 1024*16, 15, 10);
|
db_err = rt_thread_init(&dat_sqlite_thread, "db_sql", db_sqlite, RT_NULL,dat_sqlite_stack, 1024*16, 15, 10);
|
||||||
if(db_err != RT_EOK)
|
if(db_err != RT_EOK)
|
||||||
{
|
{
|
||||||
LOG_D("Failed to create SQLite thread!\n");
|
LOG_D("Failed to create SQLite thread!");
|
||||||
}
|
}
|
||||||
rt_thread_startup(&dat_sqlite_thread);
|
rt_thread_startup(&dat_sqlite_thread);
|
||||||
|
|
||||||
/* rt_thread_t tid;
|
/*rt_thread_t tid;
|
||||||
tid = rt_thread_create("db_sql", db_sqlite, RT_NULL, 1024 *14, 18, 10);
|
tid = rt_thread_create("db_sql", db_sqlite, RT_NULL, 1024 *16, 18, 10);
|
||||||
|
|
||||||
if (tid != RT_NULL)
|
if (tid != RT_NULL)
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-1
@@ -69,4 +69,4 @@ static int wdt_sample()
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
INIT_APP_EXPORT(wdt_sample);
|
//INIT_APP_EXPORT(wdt_sample);
|
||||||
@@ -16,6 +16,11 @@ struct rt_memheap sram_DTCMRAM,sram_AXIRAM,sram_SRAM1,sram_SRAM2;
|
|||||||
|
|
||||||
rt_weak void rt_hw_board_init()
|
rt_weak void rt_hw_board_init()
|
||||||
{
|
{
|
||||||
|
/* 允许未对齐访问(Cortex-M3/M4/M7 支持) */
|
||||||
|
//SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk; // ← 默认是 1(禁止)
|
||||||
|
// 要允许,应该 CLEAR 这个位!
|
||||||
|
//SCB->CCR &= ~SCB_CCR_UNALIGN_TRP_Msk;
|
||||||
|
|
||||||
extern void hw_board_init(char *clock_src, int32_t clock_src_freq, int32_t clock_target_freq);
|
extern void hw_board_init(char *clock_src, int32_t clock_src_freq, int32_t clock_target_freq);
|
||||||
|
|
||||||
/* Heap initialization */
|
/* Heap initialization */
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef SDIO_MAX_FREQ
|
#ifndef SDIO_MAX_FREQ
|
||||||
#define SDIO_MAX_FREQ (25 * 1000 * 1000)
|
#define SDIO_MAX_FREQ (50 * 1000 * 1000)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
|
#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
|
||||||
|
|||||||
@@ -20727,6 +20727,10 @@ static malloc_zone_t* _sqliteZone_;
|
|||||||
** Use standard C library malloc and free on non-Apple systems.
|
** Use standard C library malloc and free on non-Apple systems.
|
||||||
** Also used by rt-thread systems if SQLITE_WITHOUT_ZONEMALLOC is defined.
|
** Also used by rt-thread systems if SQLITE_WITHOUT_ZONEMALLOC is defined.
|
||||||
*/
|
*/
|
||||||
|
extern struct rt_memheap sdram_heap,sram_SRAM1,sram_DTCMRAM;
|
||||||
|
//#define SQLITE_MALLOC(x) rt_memheap_alloc(&sram_DTCMRAM,(rt_size_t)x)
|
||||||
|
//#define SQLITE_FREE(x) rt_free(x)
|
||||||
|
//#define SQLITE_REALLOC(x,y) rt_memheap_realloc(&sram_DTCMRAM,(x),(rt_size_t)(y))
|
||||||
#define SQLITE_MALLOC(x) rt_malloc((rt_size_t)x)
|
#define SQLITE_MALLOC(x) rt_malloc((rt_size_t)x)
|
||||||
#define SQLITE_FREE(x) rt_free(x)
|
#define SQLITE_FREE(x) rt_free(x)
|
||||||
#define SQLITE_REALLOC(x,y) rt_realloc((x),(rt_size_t)(y))
|
#define SQLITE_REALLOC(x,y) rt_realloc((x),(rt_size_t)(y))
|
||||||
|
|||||||
Reference in new issue
Block a user