diff --git a/K210code/README.md b/K210code/README.md index 44ab525..79176f3 100644 --- a/K210code/README.md +++ b/K210code/README.md @@ -4,22 +4,24 @@ Make a directory named `ncc`. Download [nncase]( #include +#include #include "uarths.h" #include "kpu.h" #include "incbin.h" +#include "iomem.h" +#include "syscalls.h" -#define INCBIN_STYLE INCBIN_STYLE_SNAKE +#define INCBIN_STYLE INCBIN_STYLE_SNAKE #define INCBIN_PREFIX #define PLL0_OUTPUT_FREQ 800000000UL -#define PLL1_OUTPUT_FREQ 300000000UL +#define PLL1_OUTPUT_FREQ 400000000UL INCBIN(model, "mobilenetv1_1.0.kmodel"); @@ -32,6 +35,9 @@ volatile uint32_t g_ai_done_flag; extern const unsigned char gImage_image[] __attribute__((aligned(128))); +#define IMAGE_DATA_SIZE (224 * 224 * 3) +uint8_t *pImage; + static int ai_done(void *ctx) { g_ai_done_flag = 1; @@ -48,9 +54,20 @@ int main() uarths_init(); plic_init(); + pImage = (uint8_t*)iomem_malloc(IMAGE_DATA_SIZE); + if (pImage) + { + memcpy(pImage, gImage_image, IMAGE_DATA_SIZE); + } + else + { + printf("Bad allocation!\n"); + return 1; + } + if (kpu_load_kmodel(&task, model_data) != 0) - { - printf("\nmodel init error\n"); + { + printf("\nmodel init error\n"); return -1; } @@ -58,7 +75,7 @@ int main() printf("System Start\n"); g_ai_done_flag = 0; - kpu_run_kmodel(&task, gImage_image, DMAC_CHANNEL5, ai_done, NULL); + kpu_run_kmodel(&task, pImage, DMAC_CHANNEL5, ai_done, NULL); while (g_ai_done_flag == 0); float *output; size_t output_size; diff --git a/K210code/mobilenetv1_1.0.kmodel b/K210code/mobilenetv1_1.0.kmodel index 174d6f2..c975304 100644 Binary files a/K210code/mobilenetv1_1.0.kmodel and b/K210code/mobilenetv1_1.0.kmodel differ