This commit is contained in:
刘可亮
2024-01-27 08:47:24 +08:00
parent d3bd993b5f
commit 9f7ba67007
2345 changed files with 74421 additions and 76616 deletions

View File

@@ -0,0 +1,15 @@
# RT-Thread building script for component
from building import *
Import('rtconfig')
cwd = GetCurrentDir()
src = Glob('*.c')
CPPPATH = [cwd]
ASFLAGS = ''
group = DefineGroup('BLCMD', src, depend = [''], CPPPATH = CPPPATH, ASFLAGS = ASFLAGS)
Return('group')

View File

@@ -0,0 +1,119 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <aic_common.h>
static void hex_dump_1(unsigned char *buf, unsigned long len)
{
unsigned long i;
for (i = 0; i < len; i++) {
if (i && (i % 16) == 0)
printf("\n");
if ((i % 16) == 0)
printf("0x%08lx : ", (unsigned long)&buf[i]);
printf("%02x ", buf[i]);
}
printf("\n");
}
static void hex_dump_2(unsigned char *buf, unsigned long len)
{
unsigned long i;
unsigned short data;
i = 0;
while (i < len) {
if (i && (i % 16) == 0)
printf("\n");
if ((i % 16) == 0)
printf("0x%08lx : ", (unsigned long)&buf[i]);
data = 0;
if ((i + 2) <= len) {
memcpy(&data, &buf[i], 2);
i += 2;
} else {
memcpy(&data, &buf[i], 1);
i += 1;
}
printf("%04x ", data);
}
printf("\n");
}
static void hex_dump_4(unsigned char *buf, unsigned long len)
{
unsigned long i;
unsigned long data;
i = 0;
while (i < len) {
if (i && (i % 16) == 0)
printf("\n");
if ((i % 16) == 0)
printf("0x%08lx : ", (unsigned long)&buf[i]);
data = 0;
if ((i + 4) <= len) {
memcpy(&data, &buf[i], 4);
i += 4;
} else {
memcpy(&data, &buf[i], len - i);
i += (len - i);
}
printf("%08lx ", data);
}
printf("\n");
}
static void hex_dump_8(unsigned char *buf, unsigned long len)
{
unsigned long i;
unsigned long long data;
i = 0;
while (i < len) {
if (i && (i % 16) == 0)
printf("\n");
if ((i % 16) == 0)
printf("0x%08lx : ", (unsigned long)&buf[i]);
data = 0;
if ((i + 8) <= len) {
memcpy(&data, &buf[i], 8);
i += 8;
} else {
memcpy(&data, &buf[i], len - i);
i += (len - i);
}
printf("%16llx ", data);
}
printf("\n");
}
void hexdump(unsigned char *buf, unsigned long len, int groupsize)
{
if (groupsize <= 1) {
hex_dump_1(buf, len);
} else if (groupsize <= 2) {
hex_dump_2(buf, len);
} else if (groupsize <= 4) {
hex_dump_4(buf, len);
} else if (groupsize <= 8) {
hex_dump_8(buf, len);
} else {
hex_dump_1(buf, len);
}
}
void show_speed(char *msg, u32 len, u32 us)
{
u32 tmp, speed;
/* Split to serval step to avoid overflow */
tmp = 1000 * len;
tmp = tmp / us;
tmp = 1000 * tmp;
speed = tmp / 1024;
printf("%s: %d byte, %d us -> %d KB/s\n", msg, len, us, speed);
}

View File

@@ -0,0 +1,21 @@
/*
* Copyright (c) 2023, Artinchip Technology Co., Ltd
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef __BL_HEXDUMP_H_
#define __BL_HEXDUMP_H_
#ifdef __cplusplus
extern "C" {
#endif
void hexdump(unsigned char *buf, unsigned long len, int groupsize);
void show_speed(char *msg, u32 len, u32 us);
#ifdef __cplusplus
}
#endif
#endif /* __BL_HEXDUMP_H_ */

View File

@@ -0,0 +1,113 @@
/*
* Copyright (c) 2023, Artinchip Technology Co., Ltd
*
* SPDX-License-Identifier: Apache-2.0
*
* Wu Dehuang <dehuang.wu@artinchip.com>
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <console.h>
#include <aic_common.h>
#include <hexdump.h>
#define MD_HELP \
"memory display command:\n" \
" p <addr> <count> [mode]\n" \
" addr: hex address string\n" \
" count: display unit count\n" \
" mode: should be 1/2/4 (default is 4)\n" \
" e.g.: \n" \
" p 0x40000000 64\n" \
" p 0x40000000 64 1\n" \
" p 0x40000000 64 2\n"
static void mem_display_help(void)
{
puts(MD_HELP);
}
static int do_mem_display(int argc, char *argv[])
{
int groupsize;
unsigned long addr, cnt;
cnt = 1;
if (argc < 3) {
goto help;
}
if (argc > 3) {
addr = strtol(argv[1], NULL, 0);
cnt = strtol(argv[2], NULL, 0);
groupsize = strtol(argv[3], NULL, 0);
if ((groupsize != 1) && (groupsize != 2) && (groupsize != 4))
goto help;
} else {
groupsize = 4;
addr = strtol(argv[1], NULL, 0);
cnt = strtol(argv[2], NULL, 0);
}
hexdump((void *)addr, cnt * groupsize, groupsize);
return 0;
help:
mem_display_help();
return 0;
}
#define MW_HELP \
"memory write command:\n" \
" m <addr> <value> [mode]\n" \
" addr: hex address string\n" \
" value: value going to write\n" \
" mode: should be 1/2/4 (default is 4)\n" \
" e.g.: \n" \
" m 0x40000000 0x64\n" \
" m 0x40000000 0x64 1\n" \
" m 0x40000000 0x64 2\n"
static void mem_write_help(void)
{
puts(MW_HELP);
}
static int do_mem_write(int argc, char *argv[])
{
unsigned long addr, val;
unsigned char *p;
int groupsize;
val = 0;
if (argc < 3) {
goto help;
}
if (argc > 3) {
addr = strtol(argv[1], NULL, 0);
val = strtol(argv[2], NULL, 0);
groupsize = strtol(argv[3], NULL, 0);
if ((groupsize != 1) && (groupsize != 2) && (groupsize != 4))
goto help;
} else {
groupsize = 4;
addr = strtol(argv[1], NULL, 0);
val = strtol(argv[2], NULL, 0);
}
p = (unsigned char *)addr;
memcpy(p, &val, groupsize);
return 0;
help:
mem_write_help();
return 0;
}
CONSOLE_CMD(p, do_mem_display, "Memory display");
CONSOLE_CMD(m, do_mem_write, "Memory write");

View File

@@ -0,0 +1,50 @@
/*
* Copyright (c) 2023, Artinchip Technology Co., Ltd
*
* SPDX-License-Identifier: Apache-2.0
*
* Wu Dehuang <dehuang.wu@artinchip.com>
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <console.h>
#include <aic_core.h>
#include <aic_common.h>
#include <aic_errno.h>
#include <aic_hal.h>
#include <hal_rtc.h>
#include <wdt.h>
static int do_reset_boot(int argc, char *argv[])
{
#ifdef AIC_WDT_DRV
wdt_init();
printf("Going to reboot ...\n");
#endif
#ifdef AIC_WRI_DRV
aic_set_reboot_reason(REBOOT_REASON_CMD_REBOOT);
#endif
#ifdef AIC_WDT_DRV
wdt_expire_now();
while(1);
#endif
return 0;
}
CONSOLE_CMD(reset, do_reset_boot, "Reboot device.");
CONSOLE_CMD(reboot, do_reset_boot, "Reboot device.");
static int cmd_aicupg(int argc, char **argv)
{
#ifdef AIC_WRI_DRV
aic_set_reboot_reason(REBOOT_REASON_UPGRADE);
#endif
do_reset_boot(0, NULL);
return 0;
}
CONSOLE_CMD(aicupg, cmd_aicupg, "Reboot to the upgrade mode.");