test_api_main.c_bc 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #ifdef _XOS
  5. #define IDMA_APP_USE_XOS // will use inlined disable/enable int
  6. #endif
  7. #ifdef _XTOS
  8. #define IDMA_APP_USE_XTOS // will use inlined disable/enable int
  9. #endif
  10. #include "../src/include/dsp_ps_debug.h"
  11. #include "dsp_ps_ns.h"
  12. #include "ps_sched.h"
  13. //#include "CppUTest/CommandLineTestRunner.h"
  14. //#include "CppUTest/TestHarness.h"
  15. #include "isp_hw.h"
  16. #include <xtensa/hal.h>
  17. #include <xtensa/idma.h>
  18. #include "idma_if.h"
  19. #include "algo.h"
  20. #define FRAME_NUM 2
  21. #define N_BUFFER_NUM 3
  22. char dst_pic[FRAME_NUM][1080 * 1920*2];
  23. char *ref_pic=0xc1000000;
  24. char *isp_ry_out=0xd0000000;
  25. #define MAX_ENTRY 128
  26. uint32_t idma_tick[MAX_ENTRY];
  27. uint32_t isp_int_tick[MAX_ENTRY];
  28. int32_t idma_cnt;
  29. int32_t isp_int_cnt;
  30. int32_t bus_idle_flag;
  31. void print_tick()
  32. {
  33. int i;
  34. if(idma_cnt>MAX_ENTRY ||isp_int_cnt>MAX_ENTRY )
  35. {
  36. printf("Count overflow idma count:%d,isp_int count:%d",idma_cnt,isp_int_cnt);
  37. }
  38. for(i=0;i<idma_cnt;i++)
  39. {
  40. printf("idma(%d) cost tick:%x\n",i,idma_tick[i]);
  41. }
  42. for(i=0;i<isp_int_cnt-1;i++)
  43. {
  44. printf("isp int(%d) cost tick:%d\n",i,isp_int_tick[i+1]-isp_int_tick[i]);
  45. }
  46. }
  47. #if 0
  48. #define TCM_SIZE 1024*64
  49. char temp_bufer_tcm[TCM_SIZE] __attribute__((section(".dram1.data")));
  50. int isp_kernel_dummy(struct algo_param * params)
  51. {
  52. int buffer_index;
  53. int line_in_entry =0;
  54. uint32_t size = params->row_stride*(params->stop_row-params->start_row);
  55. // for(buffer_index=0;buffer_index<2;buffer_index++)
  56. // {
  57. if(params->image_in[0]==0 || params->image_out[0]==0){return -1;}
  58. if (idma_copy_ext2ext(params->image_in[0],
  59. params->image_out[0],
  60. size, temp_bufer_tcm,TCM_SIZE) != 0) {
  61. printf("idma copy error\n");
  62. return -1;
  63. }
  64. return 0;
  65. }
  66. #endif
  67. extern enum xrp_status ps_post_isp_config_message_handler(void* in_data,void* out_data);
  68. void test_ps_isp_algo_api()
  69. {
  70. if (0 != ps_xrp_device_int(0)) {
  71. fprintf(stderr, "xrp_open_device failed\n");
  72. abort();
  73. }
  74. if(0 != init_scheduler()){
  75. fprintf(stderr, "scheduler init failed\n");
  76. abort();
  77. }
  78. sisp_config_par isp_data=(sisp_config_par){
  79. .id=0,
  80. .hor=1920,
  81. .ver=1080,
  82. .data_fmt=EISP_RAW12_FORMAT_ALGIN1,
  83. .line_in_entry=16,
  84. .buffer_size = 1920*2*16*2,
  85. .buffer_addr=0xb1000000,
  86. };
  87. extern enum xrp_status ps_isp_config_message_handler(void* in_data,void* out_data);
  88. ps_isp_config_message_handler(&isp_data,NULL);
  89. spost_isp_config_par pisp_data=(spost_isp_config_par){
  90. .id=0,
  91. .hor=1920,
  92. .ver=1080,
  93. .data_fmt=EISP_RAW12_FORMAT_ALGIN1,
  94. .line_in_entry=16,
  95. .buffer_size = 1920*2*16*2,
  96. .buffer_addr=0xc0000000,
  97. };
  98. extern enum xrp_status ps_post_isp_config_message_handler(void* in_data,void* out_data);
  99. ps_post_isp_config_message_handler(&pisp_data,NULL);
  100. extern enum xrp_status ps_isp_algo_start(void* in_data,void* out_data);
  101. ps_isp_algo_start(NULL,NULL);
  102. ps_task_shedule();
  103. }
  104. int main() {
  105. test_ps_isp_algo_api();
  106. // print_tick();
  107. }