- Timestamp:
- Sep 14, 2020, 6:36:03 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
azure_iot_hub_riscv/trunk/app_iothub_client/src/kpu_main.c
r453 r458 38 38 * の責任を負わない. 39 39 * 40 * $Id $40 * $Id: kpu_main.c 2176 2020-08-19 23:50:05Z coas-nagasima $ 41 41 */ 42 42 … … 63 63 #include "kpu.h" 64 64 #include "region_layer.h" 65 66 extern void ai_dma_done_isr(DMA_Handle_t *dma);67 65 68 66 /* … … 187 185 static uint32_t lable_string_draw_ram[115 * 16 * 8 / 2]; 188 186 #endif 189 extern uint8_t model_data[];187 extern const uint8_t model_data[]; 190 188 kpu_model_context_t g_task; 191 189 static region_layer_t detect_rl; … … 234 232 OV2640_t *hcmr; 235 233 DVP_Handle_t *hdvp; 236 uint16_t *lcd_buffer;237 234 ER_UINT ercd; 238 uint32_t i , count;235 uint32_t i; 239 236 struct tm2 time; 240 237 unsigned long atmp; … … 371 368 syslog_1(LOG_NOTICE, "OV2640 id(%d)", ov2640_id(hcmr)); 372 369 373 Init.WorkMode = SPI_WORK_MODE_ 0;370 Init.WorkMode = SPI_WORK_MODE_2; 374 371 Init.FrameFormat = SPI_FF_OCTAL; 375 372 Init.DataSize = 8; … … 385 382 Init.SsPin = SIPEED_ST7789_SS_PIN; 386 383 Init.SsNo = SIPEED_ST7789_SS; 387 Init.TxDMAChannel = SIPEED_DMA_CH;384 Init.TxDMAChannel = -1; 388 385 Init.RxDMAChannel = -1; 389 386 Init.semid = SPI1TRN_SEM; … … 408 405 lcd_init(hlcd); 409 406 syslog_2(LOG_NOTICE, "width(%d) height(%d)", hlcd->_width, hlcd->_height); 410 count = hcmr->_width * hcmr->_height; 411 lcd_buffer = (uint16_t *)malloc(count * 2); 412 if(lcd_buffer == NULL){ 413 syslog_0(LOG_ERROR, "no lcd buffer !"); 414 slp_tsk(); 415 } 407 416 408 DrawProp.BackColor = ST7789_WHITE; 417 409 DrawProp.TextColor = ST7789_BLACK; … … 466 458 syslog_0(LOG_ERROR, "SD-CARD INITAIL ERROR !"); 467 459 #endif 468 extern DMA_Handle_t g_ai_hdma; 469 g_ai_hdma.chnum = AI_DMA_CH; 470 g_ai_hdma.xfercallback = ai_dma_done_isr; 471 g_ai_hdma.errorcallback = NULL; 472 g_ai_hdma.Init.Request = DMA_SELECT_AI_RX_REQ; /* DMA選択 */ 473 g_ai_hdma.Init.Direction = DMA_PERIPH_TO_MEMORY; /* DMA転送方向 */ 474 g_ai_hdma.Init.SrcMultBlock = DMAC_MULTBLOCK_CONT; /* ソースマルチブロックタイプ */ 475 g_ai_hdma.Init.DrcMultBlock = DMAC_MULTBLOCK_CONT; /* デスティネーションマルチブロックタイプ */ 476 g_ai_hdma.Init.SrcHandShake = DMAC_HS_HARDWARE; /* ソースハンドシェイク */ 477 g_ai_hdma.Init.DrcHandShake = DMAC_HS_SOFTWARE; /* デスティネーションハンドシェイク */ 478 g_ai_hdma.Init.SrcHwhsPol = DMAC_HWHS_POLARITY_LOW; /* ソースハードウェアハンドシェイク極性 */ 479 g_ai_hdma.Init.DrcHwhsPol = DMAC_HWHS_POLARITY_LOW; /* デスティネーションハードウェアハンドシェイク極性 */ 480 g_ai_hdma.Init.Priority = 4; /* 優先度 */ 481 g_ai_hdma.Init.SrcMaster = DMAC_MASTER1; /* ソースマスター設定 */ 482 g_ai_hdma.Init.DstMaster = DMAC_MASTER2; /* デスティネーションマスター設定 */ 483 g_ai_hdma.Init.SrcInc = DMAC_ADDR_NOCHANGE; /* ソースインクリメント設定 */ 484 g_ai_hdma.Init.DstInc = DMAC_ADDR_INCREMENT; /* デスティネーションインクリメント設定 */ 485 g_ai_hdma.Init.SrcTransWidth = DMAC_TRANS_WIDTH_32; /* ソース転送幅 */ 486 g_ai_hdma.Init.DstTransWidth = DMAC_TRANS_WIDTH_32; /* デスティネーション転送幅 */ 487 g_ai_hdma.Init.SrcBurstSize = DMAC_MSIZE_4; /* ソースバーストサイズ */ 488 g_ai_hdma.Init.DstBurstSize = DMAC_MSIZE_4; /* デスティネーションバーストサイズ */ 489 g_ai_hdma.Init.IocBlkTrans = 0; /* IOCブロック転送 */ 490 g_ai_hdma.localdata = (void *)&g_task; 491 if ((ercd = dma_init(&g_ai_hdma)) != E_OK) { 492 syslog_0(LOG_ERROR, "AI-DMA INITAIL ERROR !"); 460 if ((ercd = kpu_init(&g_task)) != E_OK) { 461 syslog_0(LOG_ERROR, "kpu init error"); 462 slp_tsk(); 493 463 } 494 464 … … 502 472 detect_rl.threshold = 0.7; 503 473 detect_rl.nms_value = 0.3; 504 region_layer_init(&detect_rl, 10, 7, 125, 320, 240); 474 if (region_layer_init(&detect_rl, 10, 7, 125, 320, 240) != 0) { 475 syslog_0(LOG_ERROR, "region layer init error"); 476 slp_tsk(); 477 } 505 478 506 479 bool_t camok = true; … … 524 497 atmp = (unsigned long)hcmr->_aiBuffer - IOMEM; 525 498 kpu_run_kmodel(&g_task, (const uint8_t *)atmp, AI_DMA_CH, ai_done, NULL); 526 527 uint32_t *p = (uint32_t *)hcmr->_dataBuffer;528 uint32_t *q = (uint32_t *)lcd_buffer;529 uint32_t *e = (uint32_t *)&lcd_buffer[count];530 for (; q < e ; p++, q++){531 *q = SWAP_32(*p);532 }533 499 } 534 500 … … 555 521 } 556 522 557 lcd_drawPicture(hlcd, 0, 0, hcmr->_width, hcmr->_height, lcd_buffer);523 lcd_drawPicture(hlcd, 0, 0, hcmr->_width, hcmr->_height, (uint16_t *)hcmr->_dataBuffer); 558 524 559 525 /* draw boxs */
Note:
See TracChangeset
for help on using the changeset viewer.