diff --git a/action_technology_sdk/hello_world/CMakeLists.txt b/action_technology_sdk/hello_world/CMakeLists.txt new file mode 100644 index 00000000..767dbd87 --- /dev/null +++ b/action_technology_sdk/hello_world/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required(VERSION 3.13.1) + +find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) +project(hello_world) + +add_subdirectory(src) + +if(CONFIG_STACK_CANARIES) + zephyr_library_compile_options(-DAPP_BT_WATCH -fstack-protector-all) +endif() diff --git a/action_technology_sdk/hello_world/Kconfig b/action_technology_sdk/hello_world/Kconfig new file mode 100644 index 00000000..f78ee453 --- /dev/null +++ b/action_technology_sdk/hello_world/Kconfig @@ -0,0 +1,7 @@ + +mainmenu "lvgl demo" + +source "Kconfig.zephyr" + +menu "App Configuration" +endmenu diff --git a/action_technology_sdk/hello_world/boards/ats3085e_dev_watch_ext_nor.conf b/action_technology_sdk/hello_world/boards/ats3085e_dev_watch_ext_nor.conf new file mode 100644 index 00000000..66aa8b29 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3085e_dev_watch_ext_nor.conf @@ -0,0 +1,36 @@ +CONFIG_LV_VDB_SIZE=36348 +CONFIG_UI_GUI_MEM_POOL_SIZE=391216 +CONFIG_UI_RES_MEM_POOL_SIZE=0 +#CONFIG_BITMAP_PER_FONT_CACHE_SIZE=16552 +CONFIG_BITMAP_FONT_CACHE_POOL_SIZE=0 +CONFIG_FREETYPE_FONT_BITMAP_BPP=2 +CONFIG_FREETYPE_PER_FONT_CACHE_SIZE=24576 +CONFIG_FREETYPE_FONT_ENABLE_MEMORY_FACE=y +CONFIG_FREETYPE_FONT_MAX_FACES=2 +CONFIG_FREETYPE_FONT_MAX_SIZES=3 +CONFIG_FREETYPE_FONT_SHAPE_CACHE_SIZE=0 + +CONFIG_SPINAND_ACTS=n +CONFIG_SPINAND_LIB=n + +CONFIG_DISK_ACCESS_NOR=y + +CONFIG_IPMSG_BTC_FCC_NAME="/NOR:K/fcc.bin" + +CONFIG_USER_WORK_Q=y +CONFIG_USER_WORK_Q_PRIORITY=8 + +CONFIG_DVFS=y +CONFIG_ACTS_DVFS_DYNAMIC_LEVEL=y + +CONFIG_SENSOR_ALGO_MOTION_CYWEE_IN_RAM=n + +CONFIG_USB_DEVICE=n +CONFIG_USB_AOTG_OTG=n +CONFIG_USB_AOTG_DC_ENABLED=n +CONFIG_USB_AOTG_OTG_VERSION=0x551A24CF +CONFIG_USB_DEVICE_DRIVER=n +CONFIG_USB_DEVICE_STACK=n +CONFIG_USB_MASS_STORAGE=n +CONFIG_HAVE_CUSTOM_LINKER_SCRIPT=y +CONFIG_CUSTOM_LINKER_SCRIPT="linker_no_psram.ld" \ No newline at end of file diff --git a/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor.conf b/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor.conf new file mode 100644 index 00000000..3aae798f --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor.conf @@ -0,0 +1,45 @@ +CONFIG_LV_VDB_SIZE=108608 +CONFIG_UI_GUI_MEM_POOL_SIZE=49152 +CONFIG_UI_RES_MEM_POOL_SIZE=0 +#CONFIG_BITMAP_PER_FONT_CACHE_SIZE=16552 +CONFIG_BITMAP_FONT_CACHE_POOL_SIZE=180000 +CONFIG_FREETYPE_FONT_BITMAP_BPP=2 +CONFIG_FREETYPE_PER_FONT_CACHE_SIZE=40960 +CONFIG_FREETYPE_FONT_ENABLE_MEMORY_FACE=y +CONFIG_FREETYPE_FONT_MAX_FACES=2 +CONFIG_FREETYPE_FONT_MAX_SIZES=3 +CONFIG_FREETYPE_FONT_SHAPE_CACHE_SIZE=120000 + + +CONFIG_SPINAND_ACTS=n +CONFIG_SPINAND_LIB=n + +CONFIG_VG_LITE=y +CONFIG_VG_LITE_K_MEM_POOL_SIZE=172032 + +CONFIG_DISK_ACCESS_NOR=y + +CONFIG_IPMSG_BTC_FCC_NAME="/NOR:K/fcc.bin" + +CONFIG_USER_WORK_Q=y +CONFIG_USER_WORK_Q_PRIORITY=8 + +CONFIG_UI_MEM_VDB_SHARE_SURFACE_BUFFER=y + +CONFIG_DVFS=y +CONFIG_ACTS_DVFS_DYNAMIC_LEVEL=y + +CONFIG_SENSOR_ALGO_MOTION_CYWEE_IN_RAM=n + +CONFIG_USB_DEVICE=n +CONFIG_USB_AOTG_OTG=n +CONFIG_USB_AOTG_DC_ENABLED=n +CONFIG_USB_AOTG_OTG_VERSION=0x551A24CF +CONFIG_USB_DEVICE_DRIVER=n +CONFIG_USB_DEVICE_STACK=n +CONFIG_USB_MASS_STORAGE=n + +CONFIG_HAVE_CUSTOM_LINKER_SCRIPT=y +CONFIG_CUSTOM_LINKER_SCRIPT="linker_psram_4m.ld" + + diff --git a/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor/firmware.xml b/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor/firmware.xml new file mode 100644 index 00000000..ff2e67b5 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor/firmware.xml @@ -0,0 +1,356 @@ + + + Firmware layout for leopard + 0x2000000 + + + 0x10000 + 0x10000 + 1.00_$(build_time) + + + + + +
0x0
+ 0x1000 + BOOT + fw0_boot + 1 + mbrec.bin + 0x0 + false + false + false + true + true + 0 + 0 +
+ + +
0x1000
+ 0x1000 + SYS_PARAM + fw0_param + 2 + param.bin + 0x1000 + false + false + false + true + true + 0 + 0 +
+ + +
0x2000
+ 0x1000 + BOOT + fw1_boot + 1 + 0x2000 + false + false + false + false + false + 1 +
+ + +
0x3000
+ 0x1000 + SYS_PARAM + fw1_param + 2 + 0x3000 + false + false + false + false + false + 1 +
+ + +
0x4000
+ 0x20000 + RECOVERY + fw0_rec + 3 + recovery.bin + 0x4000 + false + false + false + true + true + 0 + 0 +
+ + +
0x24000
+ 0x1B7000 + SYSTEM + fw0_sys + 4 + app.bin + 0x24000 + false + false + true + true + true + TEMP + 0 + 0 +
+ + +
0x1db000
+ 0x10000 + DATA + fw0_sdfs + 5 + sdfs.bin + 0x1db000 + false + false + true + true + true + TEMP + 0 + 0 +
+ + +
0x1eb000
+ 0x1000 + DATA + nvram_factory + 6 + nvram.bin + 0x1eb000 + false + false + false + true + true + 0 +
+ + +
0x1ec000
+ 0x2000 + DATA + nvram_factory_rw + 7 + 0x1ec000 + false + false + false + false + false + 0 +
+ +
0x1ee000
+ 0x2000 + DATA + nvram_user + 8 + 0x1ee000 + false + false + false + false + false +
+ + +
0x1F0000
+ 0x12000 + DATA + user_rw + 9 + 0x1F0000 + false + false + false + false + false + 0 + 0 +
+ + +
0x202000
+ 0x4000 + DATA + logbuf + 251 + 0x202000 + false + false + false + false + false + 0 + 0 +
+ + +
0x206000
+ 0x2000 + DATA + evtbuf + 252 + 0x206000 + false + false + false + false + false + 0 + 0 +
+ + +
0x208000
+ 0xa000 + DATA + coredump + 253 + 0x208000 + false + false + false + false + false + 0 + 0 +
+ + + +
0x212000
+ 0x200000 + DATA + res_a + 10 + res.bin + 0x212000 + false + false + false + true + true + 0 + 0 +
+ + +
0x412000
+ 0x600000 + DATA + font + 12 + fonts.bin + 0x412000 + false + false + false + true + true + 0 + 0 +
+ + +
0xa12000
+ 0x2E000 + DATA + res_b + 11 + 0xa12000 + false + false + false + false + false + 0 + 0 +
+ + +
0xa40000
+ 0x80000 + DATA + sdfs_k + 20 + sdfs_k.bin + 0xa40000 + false + false + false + false + true + 0 + 0 +
+ + +
0xac0000
+ 0x100000 + TEMP + fw0_temp + 254 + 0xac0000 + false + false + false + false + false + 0 + 0 +
+ + +
0xbc0000
+ 0x10000 + DATA + runtimelog + 250 + 0xbc0000 + false + false + false + false + false + 0 + 0 +
+ + +
0xbd0000
+ 0x430000 + DATA + udisk + 40 + udisk.bin + 0xbd0000 + false + false + false + true + true + 0 + 0 +
+
+
diff --git a/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor/fwimage.cfg b/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor/fwimage.cfg new file mode 100644 index 00000000..3c11aefa --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor/fwimage.cfg @@ -0,0 +1,2 @@ + +CHIP_NAME = "ATS3085S"; diff --git a/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor/sdfs_k/adMUSIC.dsp b/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor/sdfs_k/adMUSIC.dsp new file mode 100644 index 00000000..b07682fd Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor/sdfs_k/adMUSIC.dsp differ diff --git a/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor/sdfs_k/logo.res b/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor/sdfs_k/logo.res new file mode 100644 index 00000000..791784fa Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor/sdfs_k/logo.res differ diff --git a/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor/sdfs_k/logo.sty b/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor/sdfs_k/logo.sty new file mode 100644 index 00000000..02faf7c1 Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3085s4_dev_watch_ext_nor/sdfs_k/logo.sty differ diff --git a/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor.conf b/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor.conf new file mode 100644 index 00000000..b4b18949 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor.conf @@ -0,0 +1,31 @@ +CONFIG_LV_VDB_SIZE=108608 +CONFIG_UI_GUI_MEM_POOL_SIZE=98304 +CONFIG_UI_RES_MEM_POOL_SIZE=3000000 +CONFIG_BITMAP_PER_FONT_CACHE_SIZE=98304 +CONFIG_BITMAP_FONT_CACHE_POOL_SIZE=380000 +CONFIG_FREETYPE_FONT_BITMAP_BPP=2 +CONFIG_FREETYPE_PER_FONT_CACHE_SIZE=40960 +CONFIG_FREETYPE_FONT_ENABLE_MEMORY_FACE=y +CONFIG_FREETYPE_FONT_MAX_FACES=2 +CONFIG_FREETYPE_FONT_MAX_SIZES=3 +CONFIG_FREETYPE_SHAPE_INFO_CACHE_SIZE=3072 +CONFIG_FREETYPE_FONT_SHAPE_CACHE_SIZE=120000 + + +CONFIG_SPINAND_ACTS=n +CONFIG_SPINAND_LIB=n +CONFIG_DISK_ACCESS_NOR=y +CONFIG_VG_LITE=y +CONFIG_VG_LITE_K_MEM_POOL_SIZE=172032 + + +CONFIG_IPMSG_BTC_FCC_NAME="/NOR:K/fcc.bin" + +CONFIG_USER_WORK_Q=y +CONFIG_USER_WORK_Q_PRIORITY=8 + + +CONFIG_DVFS=y +CONFIG_ACTS_DVFS_DYNAMIC_LEVEL=y +CONFIG_HAVE_CUSTOM_LINKER_SCRIPT=y +CONFIG_CUSTOM_LINKER_SCRIPT="linker.ld" diff --git a/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/fcc/mp_btc.bin b/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/fcc/mp_btc.bin new file mode 100644 index 00000000..ca86ac92 Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/fcc/mp_btc.bin differ diff --git a/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/firmware.xml b/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/firmware.xml new file mode 100644 index 00000000..ff2e67b5 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/firmware.xml @@ -0,0 +1,356 @@ + + + Firmware layout for leopard + 0x2000000 + + + 0x10000 + 0x10000 + 1.00_$(build_time) + + + + + +
0x0
+ 0x1000 + BOOT + fw0_boot + 1 + mbrec.bin + 0x0 + false + false + false + true + true + 0 + 0 +
+ + +
0x1000
+ 0x1000 + SYS_PARAM + fw0_param + 2 + param.bin + 0x1000 + false + false + false + true + true + 0 + 0 +
+ + +
0x2000
+ 0x1000 + BOOT + fw1_boot + 1 + 0x2000 + false + false + false + false + false + 1 +
+ + +
0x3000
+ 0x1000 + SYS_PARAM + fw1_param + 2 + 0x3000 + false + false + false + false + false + 1 +
+ + +
0x4000
+ 0x20000 + RECOVERY + fw0_rec + 3 + recovery.bin + 0x4000 + false + false + false + true + true + 0 + 0 +
+ + +
0x24000
+ 0x1B7000 + SYSTEM + fw0_sys + 4 + app.bin + 0x24000 + false + false + true + true + true + TEMP + 0 + 0 +
+ + +
0x1db000
+ 0x10000 + DATA + fw0_sdfs + 5 + sdfs.bin + 0x1db000 + false + false + true + true + true + TEMP + 0 + 0 +
+ + +
0x1eb000
+ 0x1000 + DATA + nvram_factory + 6 + nvram.bin + 0x1eb000 + false + false + false + true + true + 0 +
+ + +
0x1ec000
+ 0x2000 + DATA + nvram_factory_rw + 7 + 0x1ec000 + false + false + false + false + false + 0 +
+ +
0x1ee000
+ 0x2000 + DATA + nvram_user + 8 + 0x1ee000 + false + false + false + false + false +
+ + +
0x1F0000
+ 0x12000 + DATA + user_rw + 9 + 0x1F0000 + false + false + false + false + false + 0 + 0 +
+ + +
0x202000
+ 0x4000 + DATA + logbuf + 251 + 0x202000 + false + false + false + false + false + 0 + 0 +
+ + +
0x206000
+ 0x2000 + DATA + evtbuf + 252 + 0x206000 + false + false + false + false + false + 0 + 0 +
+ + +
0x208000
+ 0xa000 + DATA + coredump + 253 + 0x208000 + false + false + false + false + false + 0 + 0 +
+ + + +
0x212000
+ 0x200000 + DATA + res_a + 10 + res.bin + 0x212000 + false + false + false + true + true + 0 + 0 +
+ + +
0x412000
+ 0x600000 + DATA + font + 12 + fonts.bin + 0x412000 + false + false + false + true + true + 0 + 0 +
+ + +
0xa12000
+ 0x2E000 + DATA + res_b + 11 + 0xa12000 + false + false + false + false + false + 0 + 0 +
+ + +
0xa40000
+ 0x80000 + DATA + sdfs_k + 20 + sdfs_k.bin + 0xa40000 + false + false + false + false + true + 0 + 0 +
+ + +
0xac0000
+ 0x100000 + TEMP + fw0_temp + 254 + 0xac0000 + false + false + false + false + false + 0 + 0 +
+ + +
0xbc0000
+ 0x10000 + DATA + runtimelog + 250 + 0xbc0000 + false + false + false + false + false + 0 + 0 +
+ + +
0xbd0000
+ 0x430000 + DATA + udisk + 40 + udisk.bin + 0xbd0000 + false + false + false + true + true + 0 + 0 +
+
+
diff --git a/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/fwimage.cfg b/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/fwimage.cfg new file mode 100644 index 00000000..3c11aefa --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/fwimage.cfg @@ -0,0 +1,2 @@ + +CHIP_NAME = "ATS3085S"; diff --git a/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/sdfs_k/adMUSIC.dsp b/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/sdfs_k/adMUSIC.dsp new file mode 100644 index 00000000..b07682fd Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/sdfs_k/adMUSIC.dsp differ diff --git a/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/sdfs_k/fcc.bin b/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/sdfs_k/fcc.bin new file mode 100644 index 00000000..6eace206 Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/sdfs_k/fcc.bin differ diff --git a/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/sdfs_k/logo.res b/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/sdfs_k/logo.res new file mode 100644 index 00000000..791784fa Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/sdfs_k/logo.res differ diff --git a/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/sdfs_k/logo.sty b/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/sdfs_k/logo.sty new file mode 100644 index 00000000..02faf7c1 Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3085s_dev_watch_ext_nor/sdfs_k/logo.sty differ diff --git a/action_technology_sdk/hello_world/boards/ats3089_dev_watch.conf b/action_technology_sdk/hello_world/boards/ats3089_dev_watch.conf new file mode 100644 index 00000000..e914678b --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3089_dev_watch.conf @@ -0,0 +1,33 @@ +# Set auto size decided by shared surface buffer size +CONFIG_LV_VDB_SIZE=108608 +CONFIG_UI_GUI_MEM_POOL_SIZE=98304 +CONFIG_UI_RES_MEM_POOL_SIZE=3000000 +CONFIG_BITMAP_PER_FONT_CACHE_SIZE=98304 +CONFIG_BITMAP_FONT_CACHE_POOL_SIZE=380000 +CONFIG_FREETYPE_FONT_BITMAP_BPP=2 +CONFIG_FREETYPE_PER_FONT_CACHE_SIZE=40960 +CONFIG_FREETYPE_FONT_ENABLE_MEMORY_FACE=y +CONFIG_FREETYPE_FONT_MAX_FACES=2 +CONFIG_FREETYPE_FONT_MAX_SIZES=3 +CONFIG_FREETYPE_SHAPE_INFO_CACHE_SIZE=3072 +CONFIG_FREETYPE_FONT_SHAPE_CACHE_SIZE=120000 + + +CONFIG_DISK_ACCESS_SPINAND=y +CONFIG_VG_LITE=y +CONFIG_VG_LITE_K_MEM_POOL_SIZE=172032 + + +CONFIG_IPMSG_BTC_FCC_NAME="/NAND:K/fcc.bin" + +CONFIG_USER_WORK_Q=y +CONFIG_USER_WORK_Q_PRIORITY=8 + + +CONFIG_DVFS=y +CONFIG_ACTS_DVFS_DYNAMIC_LEVEL=y + + +CONFIG_HAVE_CUSTOM_LINKER_SCRIPT=y +CONFIG_CUSTOM_LINKER_SCRIPT="linker.ld" + diff --git a/action_technology_sdk/hello_world/boards/ats3089_dev_watch/fcc/mp_btc.bin b/action_technology_sdk/hello_world/boards/ats3089_dev_watch/fcc/mp_btc.bin new file mode 100644 index 00000000..7f83cc62 Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089_dev_watch/fcc/mp_btc.bin differ diff --git a/action_technology_sdk/hello_world/boards/ats3089_dev_watch/firmware.xml b/action_technology_sdk/hello_world/boards/ats3089_dev_watch/firmware.xml new file mode 100644 index 00000000..23f13316 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3089_dev_watch/firmware.xml @@ -0,0 +1,355 @@ + + + Firmware layout for leopard + 0x1000000 + + + 0x10000 + 0x10000 + 1.00_$(build_time) + + + + + +
0x0
+ 0x1000 + BOOT + fw0_boot + 1 + mbrec.bin + 0x0 + false + false + false + true + true + 0 + 0 +
+ + +
0x1000
+ 0x1000 + SYS_PARAM + fw0_param + 2 + param.bin + 0x1000 + false + false + false + true + true + 0 + 0 +
+ + +
0x2000
+ 0x1000 + BOOT + fw1_boot + 1 + 0x2000 + false + false + false + false + false + 1 +
+ + +
0x3000
+ 0x1000 + SYS_PARAM + fw1_param + 2 + 0x3000 + false + false + false + false + false + 1 +
+ + +
0x4000
+ 0x20000 + RECOVERY + fw0_rec + 3 + recovery.bin + 0x4000 + false + false + false + true + true + 0 + 0 +
+ + +
0x24000
+ 0x6B7000 + SYSTEM + fw0_sys + 4 + app.bin + 0x24000 + false + false + true + true + true + TEMP + 0 + 0 +
+ + +
0x6db000
+ 0x10000 + DATA + fw0_sdfs + 5 + sdfs.bin + 0x6db000 + false + false + true + true + true + TEMP + 0 + 0 +
+ + +
0x6eb000
+ 0x1000 + DATA + nvram_factory + 6 + nvram.bin + 0x6eb000 + false + false + false + true + true + 0 +
+ + +
0x6ec000
+ 0x2000 + DATA + nvram_factory_rw + 7 + 0x6ec000 + false + false + false + false + false + 0 +
+ +
0x6ee000
+ 0x2000 + DATA + nvram_user + 8 + 0x6ee000 + false + false + false + false + false +
+ + +
0x6F0000
+ 0x10000 + DATA + user_rw + 9 + 0x6F0000 + false + false + false + false + false + 0 + 0 +
+ +
0x700000
+ 0x4000 + DATA + logbuf + 251 + 0x700000 + false + false + false + false + false + 0 + 0 +
+ + +
0x704000
+ 0x2000 + DATA + evtbuf + 252 + 0x704000 + false + false + false + false + false + 0 + 0 +
+ + +
0x706000
+ 0xa000 + DATA + coredump + 253 + 0x706000 + false + false + false + false + false + 0 + 0 +
+ + + +
0x0
+ 0x1000000 + DATA + res_a + 10 + res.bin + 0x0 + false + false + false + true + true + 2 + 0 +
+ + +
0x1000000
+ 0x3000000 + DATA + font + 12 + fonts.bin + 0x1000000 + false + false + false + true + true + 2 + 0 +
+ +
0x4000000
+ 0x790000 + DATA + res_b + 11 + 0x4000000 + false + false + false + false + false + 2 + 0 +
+ + +
0x4790000
+ 0x80000 + DATA + fw0_sdfs + 20 + sdfs_k.bin + 0x4790000 + false + false + false + false + true + 2 + 0 +
+ + +
0x4810000
+ 0x4F0000 + TEMP + fw0_temp + 254 + 0x4810000 + false + false + false + false + false + 0 + 2 +
+ + +
0x4D00000
+ 0x100000 + DATA + runtimelog + 250 + 0x4D00000 + false + false + false + false + false + 2 + 0 +
+ + + +
0x4E00000
+ 0x7D00000 + DATA + udisk + 40 + udisk.bin + 0x4E00000 + false + false + false + false + true + 2 + 0 +
+
+
diff --git a/action_technology_sdk/hello_world/boards/ats3089_dev_watch/fwimage.cfg b/action_technology_sdk/hello_world/boards/ats3089_dev_watch/fwimage.cfg new file mode 100644 index 00000000..a5b59027 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3089_dev_watch/fwimage.cfg @@ -0,0 +1,2 @@ + +CHIP_NAME = "ATS3089"; diff --git a/action_technology_sdk/hello_world/boards/ats3089_dev_watch/sdfs_k/adMUSIC.dsp b/action_technology_sdk/hello_world/boards/ats3089_dev_watch/sdfs_k/adMUSIC.dsp new file mode 100644 index 00000000..b07682fd Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089_dev_watch/sdfs_k/adMUSIC.dsp differ diff --git a/action_technology_sdk/hello_world/boards/ats3089_dev_watch/sdfs_k/fcc.bin b/action_technology_sdk/hello_world/boards/ats3089_dev_watch/sdfs_k/fcc.bin new file mode 100644 index 00000000..6eace206 Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089_dev_watch/sdfs_k/fcc.bin differ diff --git a/action_technology_sdk/hello_world/boards/ats3089_dev_watch/sdfs_k/logo.res b/action_technology_sdk/hello_world/boards/ats3089_dev_watch/sdfs_k/logo.res new file mode 100644 index 00000000..791784fa Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089_dev_watch/sdfs_k/logo.res differ diff --git a/action_technology_sdk/hello_world/boards/ats3089_dev_watch/sdfs_k/logo.sty b/action_technology_sdk/hello_world/boards/ats3089_dev_watch/sdfs_k/logo.sty new file mode 100644 index 00000000..02faf7c1 Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089_dev_watch/sdfs_k/logo.sty differ diff --git a/action_technology_sdk/hello_world/boards/ats3089c_dev_watch.conf b/action_technology_sdk/hello_world/boards/ats3089c_dev_watch.conf new file mode 100644 index 00000000..bd3d0c28 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3089c_dev_watch.conf @@ -0,0 +1,32 @@ +CONFIG_LV_VDB_SIZE=108608 +CONFIG_UI_GUI_MEM_POOL_SIZE=98304 +CONFIG_UI_RES_MEM_POOL_SIZE=3000000 +CONFIG_BITMAP_PER_FONT_CACHE_SIZE=98304 +CONFIG_BITMAP_FONT_CACHE_POOL_SIZE=380000 +CONFIG_FREETYPE_FONT_BITMAP_BPP=2 +CONFIG_FREETYPE_PER_FONT_CACHE_SIZE=40960 +CONFIG_FREETYPE_FONT_ENABLE_MEMORY_FACE=y +CONFIG_FREETYPE_FONT_MAX_FACES=2 +CONFIG_FREETYPE_FONT_MAX_SIZES=3 +CONFIG_FREETYPE_SHAPE_INFO_CACHE_SIZE=3072 +CONFIG_FREETYPE_FONT_SHAPE_CACHE_SIZE=120000 + + +CONFIG_DISK_ACCESS_SPINAND=y +CONFIG_VG_LITE=y +CONFIG_VG_LITE_K_MEM_POOL_SIZE=172032 + + +CONFIG_IPMSG_BTC_FCC_NAME="/NAND:K/fcc.bin" + +CONFIG_USER_WORK_Q=y +CONFIG_USER_WORK_Q_PRIORITY=8 + + +CONFIG_DVFS=y +CONFIG_ACTS_DVFS_DYNAMIC_LEVEL=y + + +CONFIG_HAVE_CUSTOM_LINKER_SCRIPT=y +CONFIG_CUSTOM_LINKER_SCRIPT="linker.ld" + diff --git a/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/fcc/mp_btc.bin b/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/fcc/mp_btc.bin new file mode 100644 index 00000000..d95eb7ab Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/fcc/mp_btc.bin differ diff --git a/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/firmware.xml b/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/firmware.xml new file mode 100644 index 00000000..8d98b03f --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/firmware.xml @@ -0,0 +1,355 @@ + + + Firmware layout for leopard + 0x1000000 + + + 0x10000 + 0x10000 + 1.00_$(build_time) + + + + + +
0x0
+ 0x1000 + BOOT + fw0_boot + 1 + mbrec.bin + 0x0 + false + false + false + true + true + 0 + 0 +
+ + +
0x1000
+ 0x1000 + SYS_PARAM + fw0_param + 2 + param.bin + 0x1000 + false + false + false + true + true + 0 + 0 +
+ + +
0x2000
+ 0x1000 + BOOT + fw1_boot + 1 + 0x2000 + false + false + false + false + false + 1 +
+ + +
0x3000
+ 0x1000 + SYS_PARAM + fw1_param + 2 + 0x3000 + false + false + false + false + false + 1 +
+ + +
0x4000
+ 0x20000 + RECOVERY + fw0_rec + 3 + recovery.bin + 0x4000 + false + false + false + true + true + 0 + 0 +
+ + +
0x24000
+ 0x2B7000 + SYSTEM + fw0_sys + 4 + app.bin + 0x24000 + false + false + true + true + true + TEMP + 0 + 0 +
+ + +
0x2db000
+ 0x10000 + DATA + fw0_sdfs + 5 + sdfs.bin + 0x2db000 + false + false + true + true + true + TEMP + 0 + 0 +
+ + +
0x2eb000
+ 0x1000 + DATA + nvram_factory + 6 + nvram.bin + 0x2eb000 + false + false + false + true + true + 0 +
+ + +
0x2ec000
+ 0x2000 + DATA + nvram_factory_rw + 7 + 0x2ec000 + false + false + false + false + false + 0 +
+ +
0x2ee000
+ 0x2000 + DATA + nvram_user + 8 + 0x2ee000 + false + false + false + false + false +
+ + +
0x2F0000
+ 0x10000 + DATA + user_rw + 9 + 0x2F0000 + false + false + false + false + false + 0 + 0 +
+ +
0x300000
+ 0x4000 + DATA + logbuf + 251 + 0x300000 + false + false + false + false + false + 0 + 0 +
+ + +
0x304000
+ 0x2000 + DATA + evtbuf + 252 + 0x304000 + false + false + false + false + false + 0 + 0 +
+ + +
0x306000
+ 0xa000 + DATA + coredump + 253 + 0x306000 + false + false + false + false + false + 0 + 0 +
+ + + +
0x0
+ 0x1000000 + DATA + res_a + 10 + res.bin + 0x0 + false + false + false + true + true + 2 + 0 +
+ + +
0x1000000
+ 0x3000000 + DATA + font + 12 + fonts.bin + 0x1000000 + false + false + false + true + true + 2 + 0 +
+ +
0x4000000
+ 0x790000 + DATA + res_b + 11 + 0x4000000 + false + false + false + false + false + 2 + 0 +
+ + +
0x4790000
+ 0x80000 + DATA + fw0_sdfs + 20 + sdfs_k.bin + 0x4790000 + false + false + false + false + true + 2 + 0 +
+ + +
0x4810000
+ 0x1F0000 + TEMP + fw0_temp + 254 + 0x4810000 + false + false + false + false + false + 0 + 2 +
+ + +
0x4a00000
+ 0x100000 + DATA + runtimelog + 250 + 0x4a00000 + false + false + false + false + false + 2 + 0 +
+ + + +
0x4b00000
+ 0x8000000 + DATA + udisk + 40 + udisk.bin + 0x4b00000 + false + false + false + false + true + 2 + 0 +
+
+
diff --git a/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/fwimage.cfg b/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/fwimage.cfg new file mode 100644 index 00000000..a5b59027 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/fwimage.cfg @@ -0,0 +1,2 @@ + +CHIP_NAME = "ATS3089"; diff --git a/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/sdfs_k/adMUSIC.dsp b/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/sdfs_k/adMUSIC.dsp new file mode 100644 index 00000000..b07682fd Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/sdfs_k/adMUSIC.dsp differ diff --git a/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/sdfs_k/fcc.bin b/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/sdfs_k/fcc.bin new file mode 100644 index 00000000..1e1d94f7 Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/sdfs_k/fcc.bin differ diff --git a/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/sdfs_k/logo.res b/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/sdfs_k/logo.res new file mode 100644 index 00000000..791784fa Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/sdfs_k/logo.res differ diff --git a/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/sdfs_k/logo.sty b/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/sdfs_k/logo.sty new file mode 100644 index 00000000..02faf7c1 Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089c_dev_watch/sdfs_k/logo.sty differ diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch.conf b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch.conf new file mode 100644 index 00000000..bd3d0c28 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch.conf @@ -0,0 +1,32 @@ +CONFIG_LV_VDB_SIZE=108608 +CONFIG_UI_GUI_MEM_POOL_SIZE=98304 +CONFIG_UI_RES_MEM_POOL_SIZE=3000000 +CONFIG_BITMAP_PER_FONT_CACHE_SIZE=98304 +CONFIG_BITMAP_FONT_CACHE_POOL_SIZE=380000 +CONFIG_FREETYPE_FONT_BITMAP_BPP=2 +CONFIG_FREETYPE_PER_FONT_CACHE_SIZE=40960 +CONFIG_FREETYPE_FONT_ENABLE_MEMORY_FACE=y +CONFIG_FREETYPE_FONT_MAX_FACES=2 +CONFIG_FREETYPE_FONT_MAX_SIZES=3 +CONFIG_FREETYPE_SHAPE_INFO_CACHE_SIZE=3072 +CONFIG_FREETYPE_FONT_SHAPE_CACHE_SIZE=120000 + + +CONFIG_DISK_ACCESS_SPINAND=y +CONFIG_VG_LITE=y +CONFIG_VG_LITE_K_MEM_POOL_SIZE=172032 + + +CONFIG_IPMSG_BTC_FCC_NAME="/NAND:K/fcc.bin" + +CONFIG_USER_WORK_Q=y +CONFIG_USER_WORK_Q_PRIORITY=8 + + +CONFIG_DVFS=y +CONFIG_ACTS_DVFS_DYNAMIC_LEVEL=y + + +CONFIG_HAVE_CUSTOM_LINKER_SCRIPT=y +CONFIG_CUSTOM_LINKER_SCRIPT="linker.ld" + diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/fcc/mp_btc.bin b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/fcc/mp_btc.bin new file mode 100644 index 00000000..d95eb7ab Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/fcc/mp_btc.bin differ diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/firmware.xml b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/firmware.xml new file mode 100644 index 00000000..23f13316 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/firmware.xml @@ -0,0 +1,355 @@ + + + Firmware layout for leopard + 0x1000000 + + + 0x10000 + 0x10000 + 1.00_$(build_time) + + + + + +
0x0
+ 0x1000 + BOOT + fw0_boot + 1 + mbrec.bin + 0x0 + false + false + false + true + true + 0 + 0 +
+ + +
0x1000
+ 0x1000 + SYS_PARAM + fw0_param + 2 + param.bin + 0x1000 + false + false + false + true + true + 0 + 0 +
+ + +
0x2000
+ 0x1000 + BOOT + fw1_boot + 1 + 0x2000 + false + false + false + false + false + 1 +
+ + +
0x3000
+ 0x1000 + SYS_PARAM + fw1_param + 2 + 0x3000 + false + false + false + false + false + 1 +
+ + +
0x4000
+ 0x20000 + RECOVERY + fw0_rec + 3 + recovery.bin + 0x4000 + false + false + false + true + true + 0 + 0 +
+ + +
0x24000
+ 0x6B7000 + SYSTEM + fw0_sys + 4 + app.bin + 0x24000 + false + false + true + true + true + TEMP + 0 + 0 +
+ + +
0x6db000
+ 0x10000 + DATA + fw0_sdfs + 5 + sdfs.bin + 0x6db000 + false + false + true + true + true + TEMP + 0 + 0 +
+ + +
0x6eb000
+ 0x1000 + DATA + nvram_factory + 6 + nvram.bin + 0x6eb000 + false + false + false + true + true + 0 +
+ + +
0x6ec000
+ 0x2000 + DATA + nvram_factory_rw + 7 + 0x6ec000 + false + false + false + false + false + 0 +
+ +
0x6ee000
+ 0x2000 + DATA + nvram_user + 8 + 0x6ee000 + false + false + false + false + false +
+ + +
0x6F0000
+ 0x10000 + DATA + user_rw + 9 + 0x6F0000 + false + false + false + false + false + 0 + 0 +
+ +
0x700000
+ 0x4000 + DATA + logbuf + 251 + 0x700000 + false + false + false + false + false + 0 + 0 +
+ + +
0x704000
+ 0x2000 + DATA + evtbuf + 252 + 0x704000 + false + false + false + false + false + 0 + 0 +
+ + +
0x706000
+ 0xa000 + DATA + coredump + 253 + 0x706000 + false + false + false + false + false + 0 + 0 +
+ + + +
0x0
+ 0x1000000 + DATA + res_a + 10 + res.bin + 0x0 + false + false + false + true + true + 2 + 0 +
+ + +
0x1000000
+ 0x3000000 + DATA + font + 12 + fonts.bin + 0x1000000 + false + false + false + true + true + 2 + 0 +
+ +
0x4000000
+ 0x790000 + DATA + res_b + 11 + 0x4000000 + false + false + false + false + false + 2 + 0 +
+ + +
0x4790000
+ 0x80000 + DATA + fw0_sdfs + 20 + sdfs_k.bin + 0x4790000 + false + false + false + false + true + 2 + 0 +
+ + +
0x4810000
+ 0x4F0000 + TEMP + fw0_temp + 254 + 0x4810000 + false + false + false + false + false + 0 + 2 +
+ + +
0x4D00000
+ 0x100000 + DATA + runtimelog + 250 + 0x4D00000 + false + false + false + false + false + 2 + 0 +
+ + + +
0x4E00000
+ 0x7D00000 + DATA + udisk + 40 + udisk.bin + 0x4E00000 + false + false + false + false + true + 2 + 0 +
+
+
diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/fwimage.cfg b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/fwimage.cfg new file mode 100644 index 00000000..a5b59027 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/fwimage.cfg @@ -0,0 +1,2 @@ + +CHIP_NAME = "ATS3089"; diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/sdfs_k/adMUSIC.dsp b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/sdfs_k/adMUSIC.dsp new file mode 100644 index 00000000..b07682fd Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/sdfs_k/adMUSIC.dsp differ diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/sdfs_k/fcc.bin b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/sdfs_k/fcc.bin new file mode 100644 index 00000000..1e1d94f7 Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/sdfs_k/fcc.bin differ diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/sdfs_k/logo.res b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/sdfs_k/logo.res new file mode 100644 index 00000000..791784fa Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/sdfs_k/logo.res differ diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/sdfs_k/logo.sty b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/sdfs_k/logo.sty new file mode 100644 index 00000000..02faf7c1 Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch/sdfs_k/logo.sty differ diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand.conf b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand.conf new file mode 100644 index 00000000..00611f20 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand.conf @@ -0,0 +1,36 @@ +CONFIG_LV_VDB_SIZE=108608 +CONFIG_UI_GUI_MEM_POOL_SIZE=98304 +CONFIG_UI_RES_MEM_POOL_SIZE=3000000 +CONFIG_BITMAP_PER_FONT_CACHE_SIZE=98304 +CONFIG_BITMAP_FONT_CACHE_POOL_SIZE=380000 +CONFIG_FREETYPE_FONT_BITMAP_BPP=2 +CONFIG_FREETYPE_PER_FONT_CACHE_SIZE=40960 +CONFIG_FREETYPE_FONT_ENABLE_MEMORY_FACE=y +CONFIG_FREETYPE_FONT_MAX_FACES=2 +CONFIG_FREETYPE_FONT_MAX_SIZES=3 +CONFIG_FREETYPE_SHAPE_INFO_CACHE_SIZE=3072 +CONFIG_FREETYPE_FONT_SHAPE_CACHE_SIZE=120000 + +#usb mass storage config +CONFIG_MMC=y +CONFIG_MMC_ACTS=y +CONFIG_MMC_SDCARD=y +CONFIG_DISK_ACCESS_SD=y + +CONFIG_VG_LITE=y +CONFIG_VG_LITE_K_MEM_POOL_SIZE=172032 + + +CONFIG_IPMSG_BTC_FCC_NAME="/SD:K/fcc.bin" + +CONFIG_USER_WORK_Q=y +CONFIG_USER_WORK_Q_PRIORITY=8 + + +CONFIG_DVFS=y +CONFIG_ACTS_DVFS_DYNAMIC_LEVEL=y + + +CONFIG_HAVE_CUSTOM_LINKER_SCRIPT=y +CONFIG_CUSTOM_LINKER_SCRIPT="linker.ld" + diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/fcc/mp_btc.bin b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/fcc/mp_btc.bin new file mode 100644 index 00000000..d95eb7ab Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/fcc/mp_btc.bin differ diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/firmware.xml b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/firmware.xml new file mode 100644 index 00000000..c85c3aa7 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/firmware.xml @@ -0,0 +1,372 @@ + + + Firmware layout for leopard + 0x1000000 + + + 0x10000 + 0x10000 + 1.00_$(build_time) + + + + + +
0x0
+ 0x1000 + BOOT + fw0_boot + 1 + mbrec.bin + 0x0 + false + false + false + true + true + 0 + 0 +
+ + +
0x1000
+ 0x1000 + SYS_PARAM + fw0_param + 2 + param.bin + 0x1000 + false + false + false + true + true + 0 + 0 +
+ + +
0x2000
+ 0x1000 + BOOT + fw1_boot + 1 + 0x2000 + false + false + false + false + false + 1 +
+ + +
0x3000
+ 0x1000 + SYS_PARAM + fw1_param + 2 + 0x3000 + false + false + false + false + false + 1 +
+ + +
0x4000
+ 0x20000 + RECOVERY + fw0_rec + 3 + recovery.bin + 0x4000 + false + false + false + true + true + 0 + 0 +
+ + +
0x24000
+ 0x6B7000 + SYSTEM + fw0_sys + 4 + app.bin + 0x24000 + false + false + true + true + true + TEMP + 0 + 0 +
+ + +
0x6db000
+ 0x10000 + DATA + fw0_sdfs + 5 + sdfs.bin + 0x6db000 + false + false + true + true + true + TEMP + 0 + 0 +
+ + +
0x6eb000
+ 0x1000 + DATA + nvram_factory + 6 + nvram.bin + 0x6eb000 + false + false + false + true + true + 0 +
+ + +
0x6ec000
+ 0x2000 + DATA + nvram_factory_rw + 7 + 0x6ec000 + false + false + false + false + false + 0 +
+ +
0x6ee000
+ 0x2000 + DATA + nvram_user + 8 + 0x6ee000 + false + false + false + false + false +
+ + +
0x6F0000
+ 0x10000 + DATA + user_rw + 9 + 0x6F0000 + false + false + false + false + false + 0 + 0 +
+ +
0x700000
+ 0x4000 + DATA + logbuf + 251 + 0x700000 + false + false + false + false + false + 0 + 0 +
+ + +
0x704000
+ 0x2000 + DATA + evtbuf + 252 + 0x704000 + false + false + false + false + false + 0 + 0 +
+ + +
0x706000
+ 0xa000 + DATA + coredump + 253 + 0x706000 + false + false + false + false + false + 0 + 0 +
+ + +
0x0
+ 0x8000 + BOOT + mbr + 1 + u_mbr.bin + 0x0 + false + false + false + true + true + 1 + 0 +
+ + +
0x8000
+ 0x1f8000 + DATA + res_a + 10 + res.bin + 0x8000 + false + false + false + true + true + 1 + 0 +
+ + +
0x1000000
+ 0x3000000 + DATA + font + 12 + fonts.bin + 0x1000000 + false + false + false + true + true + 1 + 0 +
+ +
0x4000000
+ 0x790000 + DATA + res_b + 11 + 0x4000000 + false + false + false + false + false + 1 + 0 +
+ + +
0x4790000
+ 0x100000 + DATA + fw0_sdfs + 20 + sdfs_k.bin + 0x4790000 + false + false + false + false + true + 1 + 0 +
+ + +
0x4890000
+ 0x470000 + TEMP + fw0_temp + 254 + 0x4890000 + false + false + false + false + false + 0 + 1 +
+ + +
0x4D00000
+ 0x100000 + DATA + runtimelog + 250 + 0x4D00000 + false + false + false + false + false + 1 + 0 +
+ + + +
0x4E00000
+ 0x7D00000 + DATA + udisk + 40 + udisk.bin + 0x4E00000 + false + false + false + false + true + true + 1 + 0 +
+
+
diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/fwimage.cfg b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/fwimage.cfg new file mode 100644 index 00000000..a5b59027 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/fwimage.cfg @@ -0,0 +1,2 @@ + +CHIP_NAME = "ATS3089"; diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/sdfs_k/adMUSIC.dsp b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/sdfs_k/adMUSIC.dsp new file mode 100644 index 00000000..b07682fd Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/sdfs_k/adMUSIC.dsp differ diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/sdfs_k/fcc.bin b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/sdfs_k/fcc.bin new file mode 100644 index 00000000..1e1d94f7 Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/sdfs_k/fcc.bin differ diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/sdfs_k/logo.res b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/sdfs_k/logo.res new file mode 100644 index 00000000..791784fa Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/sdfs_k/logo.res differ diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/sdfs_k/logo.sty b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/sdfs_k/logo.sty new file mode 100644 index 00000000..02faf7c1 Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand/sdfs_k/logo.sty differ diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b.conf b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b.conf new file mode 100644 index 00000000..00611f20 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b.conf @@ -0,0 +1,36 @@ +CONFIG_LV_VDB_SIZE=108608 +CONFIG_UI_GUI_MEM_POOL_SIZE=98304 +CONFIG_UI_RES_MEM_POOL_SIZE=3000000 +CONFIG_BITMAP_PER_FONT_CACHE_SIZE=98304 +CONFIG_BITMAP_FONT_CACHE_POOL_SIZE=380000 +CONFIG_FREETYPE_FONT_BITMAP_BPP=2 +CONFIG_FREETYPE_PER_FONT_CACHE_SIZE=40960 +CONFIG_FREETYPE_FONT_ENABLE_MEMORY_FACE=y +CONFIG_FREETYPE_FONT_MAX_FACES=2 +CONFIG_FREETYPE_FONT_MAX_SIZES=3 +CONFIG_FREETYPE_SHAPE_INFO_CACHE_SIZE=3072 +CONFIG_FREETYPE_FONT_SHAPE_CACHE_SIZE=120000 + +#usb mass storage config +CONFIG_MMC=y +CONFIG_MMC_ACTS=y +CONFIG_MMC_SDCARD=y +CONFIG_DISK_ACCESS_SD=y + +CONFIG_VG_LITE=y +CONFIG_VG_LITE_K_MEM_POOL_SIZE=172032 + + +CONFIG_IPMSG_BTC_FCC_NAME="/SD:K/fcc.bin" + +CONFIG_USER_WORK_Q=y +CONFIG_USER_WORK_Q_PRIORITY=8 + + +CONFIG_DVFS=y +CONFIG_ACTS_DVFS_DYNAMIC_LEVEL=y + + +CONFIG_HAVE_CUSTOM_LINKER_SCRIPT=y +CONFIG_CUSTOM_LINKER_SCRIPT="linker.ld" + diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/fcc/mp_btc.bin b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/fcc/mp_btc.bin new file mode 100644 index 00000000..d95eb7ab Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/fcc/mp_btc.bin differ diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/firmware.xml b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/firmware.xml new file mode 100644 index 00000000..c85c3aa7 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/firmware.xml @@ -0,0 +1,372 @@ + + + Firmware layout for leopard + 0x1000000 + + + 0x10000 + 0x10000 + 1.00_$(build_time) + + + + + +
0x0
+ 0x1000 + BOOT + fw0_boot + 1 + mbrec.bin + 0x0 + false + false + false + true + true + 0 + 0 +
+ + +
0x1000
+ 0x1000 + SYS_PARAM + fw0_param + 2 + param.bin + 0x1000 + false + false + false + true + true + 0 + 0 +
+ + +
0x2000
+ 0x1000 + BOOT + fw1_boot + 1 + 0x2000 + false + false + false + false + false + 1 +
+ + +
0x3000
+ 0x1000 + SYS_PARAM + fw1_param + 2 + 0x3000 + false + false + false + false + false + 1 +
+ + +
0x4000
+ 0x20000 + RECOVERY + fw0_rec + 3 + recovery.bin + 0x4000 + false + false + false + true + true + 0 + 0 +
+ + +
0x24000
+ 0x6B7000 + SYSTEM + fw0_sys + 4 + app.bin + 0x24000 + false + false + true + true + true + TEMP + 0 + 0 +
+ + +
0x6db000
+ 0x10000 + DATA + fw0_sdfs + 5 + sdfs.bin + 0x6db000 + false + false + true + true + true + TEMP + 0 + 0 +
+ + +
0x6eb000
+ 0x1000 + DATA + nvram_factory + 6 + nvram.bin + 0x6eb000 + false + false + false + true + true + 0 +
+ + +
0x6ec000
+ 0x2000 + DATA + nvram_factory_rw + 7 + 0x6ec000 + false + false + false + false + false + 0 +
+ +
0x6ee000
+ 0x2000 + DATA + nvram_user + 8 + 0x6ee000 + false + false + false + false + false +
+ + +
0x6F0000
+ 0x10000 + DATA + user_rw + 9 + 0x6F0000 + false + false + false + false + false + 0 + 0 +
+ +
0x700000
+ 0x4000 + DATA + logbuf + 251 + 0x700000 + false + false + false + false + false + 0 + 0 +
+ + +
0x704000
+ 0x2000 + DATA + evtbuf + 252 + 0x704000 + false + false + false + false + false + 0 + 0 +
+ + +
0x706000
+ 0xa000 + DATA + coredump + 253 + 0x706000 + false + false + false + false + false + 0 + 0 +
+ + +
0x0
+ 0x8000 + BOOT + mbr + 1 + u_mbr.bin + 0x0 + false + false + false + true + true + 1 + 0 +
+ + +
0x8000
+ 0x1f8000 + DATA + res_a + 10 + res.bin + 0x8000 + false + false + false + true + true + 1 + 0 +
+ + +
0x1000000
+ 0x3000000 + DATA + font + 12 + fonts.bin + 0x1000000 + false + false + false + true + true + 1 + 0 +
+ +
0x4000000
+ 0x790000 + DATA + res_b + 11 + 0x4000000 + false + false + false + false + false + 1 + 0 +
+ + +
0x4790000
+ 0x100000 + DATA + fw0_sdfs + 20 + sdfs_k.bin + 0x4790000 + false + false + false + false + true + 1 + 0 +
+ + +
0x4890000
+ 0x470000 + TEMP + fw0_temp + 254 + 0x4890000 + false + false + false + false + false + 0 + 1 +
+ + +
0x4D00000
+ 0x100000 + DATA + runtimelog + 250 + 0x4D00000 + false + false + false + false + false + 1 + 0 +
+ + + +
0x4E00000
+ 0x7D00000 + DATA + udisk + 40 + udisk.bin + 0x4E00000 + false + false + false + false + true + true + 1 + 0 +
+
+
diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/fwimage.cfg b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/fwimage.cfg new file mode 100644 index 00000000..a5b59027 --- /dev/null +++ b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/fwimage.cfg @@ -0,0 +1,2 @@ + +CHIP_NAME = "ATS3089"; diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/sdfs_k/adMUSIC.dsp b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/sdfs_k/adMUSIC.dsp new file mode 100644 index 00000000..b07682fd Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/sdfs_k/adMUSIC.dsp differ diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/sdfs_k/fcc.bin b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/sdfs_k/fcc.bin new file mode 100644 index 00000000..1e1d94f7 Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/sdfs_k/fcc.bin differ diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/sdfs_k/logo.res b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/sdfs_k/logo.res new file mode 100644 index 00000000..791784fa Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/sdfs_k/logo.res differ diff --git a/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/sdfs_k/logo.sty b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/sdfs_k/logo.sty new file mode 100644 index 00000000..02faf7c1 Binary files /dev/null and b/action_technology_sdk/hello_world/boards/ats3089p_dev_watch_sdnand_8b/sdfs_k/logo.sty differ diff --git a/action_technology_sdk/hello_world/linker.ld b/action_technology_sdk/hello_world/linker.ld new file mode 100644 index 00000000..6cd6513b --- /dev/null +++ b/action_technology_sdk/hello_world/linker.ld @@ -0,0 +1,608 @@ +/* + * Copyright (c) 2013-2014 Wind River Systems, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief Linker command/script file + * + * Linker script for the Cortex-M platforms. + */ + +#include +#include +#include + +#include +#include + +#ifdef CONFIG_SECTION_OVERLAY +#include +#endif + +/* physical address of RAM */ +#define ROMABLE_REGION FLASH +#define RAMABLE_REGION PSRAM + +#define ROM_ADDR (CONFIG_FLASH_BASE_ADDRESS + CONFIG_FLASH_LOAD_OFFSET) +#define ROM_SIZE (CONFIG_FLASH_SIZE*1K - CONFIG_FLASH_LOAD_OFFSET) + +#define RAM_SIZE (CONFIG_SRAM_SIZE * 1K) +#define RAM_ADDR CONFIG_SRAM_BASE_ADDRESS + +/* Set alignment to CONFIG_ARM_MPU_REGION_MIN_ALIGN_AND_SIZE + * to make linker section alignment comply with MPU granularity. + */ +#if defined(CONFIG_ARM_MPU_REGION_MIN_ALIGN_AND_SIZE) +_region_min_align = CONFIG_ARM_MPU_REGION_MIN_ALIGN_AND_SIZE; +#else +/* If building without MPU support, use default 4-byte alignment. */ +_region_min_align = 4; +#endif + +#define MPU_ALIGN(region_size) . = ALIGN(_region_min_align) + +MEMORY +{ + FLASH (rx) : ORIGIN = ROM_ADDR, LENGTH = ROM_SIZE + SRAM (wx) : ORIGIN = CONFIG_SRAM_BASE_ADDRESS, LENGTH = RAM_SIZE + PSRAM (wx) : ORIGIN = CONFIG_PSRAM_BASE_ADDRESS, LENGTH = CONFIG_PSRAM_SIZE * 1K + SHARE_RAM (wx) : ORIGIN = 0x2FF1AE00, LENGTH = 0x51FF + DSP_SRAM (wx) : ORIGIN = 0x30044000, LENGTH = 0x14000 + + /* Used by and documented in include/linker/intlist.ld */ + IDT_LIST (wx) : ORIGIN = (RAM_ADDR + RAM_SIZE), LENGTH = 2K +} + +ENTRY(CONFIG_KERNEL_ENTRY) + +SECTIONS +{ + +#include + + /* + * .plt and .iplt are here according to 'arm-zephyr-elf-ld --verbose', + * before text section. + */ + /DISCARD/ : + { + *(.plt) + } + + /DISCARD/ : + { + *(.iplt) + } + + GROUP_START(ROMABLE_REGION) + + __rom_region_start = ROM_ADDR; + + SECTION_PROLOGUE(rom_start,,) + { + +/* Located in generated directory. This file is populated by calling + * zephyr_linker_sources(ROM_START ...). This typically contains the vector + * table and debug information. + */ +#include + + } GROUP_LINK_IN(ROMABLE_REGION) + + SECTION_PROLOGUE(img_head,(ROM_ADDR+0x200),) AT (ROM_ADDR+0x200) + { + KEEP(*(.img_head*)) + } GROUP_LINK_IN(ROMABLE_REGION) + + SECTION_PROLOGUE(_ACTIONS_RODATA_SECTION_NAME,,) + { + . = ALIGN(4); + __app_entry_table = .; + KEEP(*(.app_entry)) + __app_entry_end = .; + + . = ALIGN(4); + __service_entry_table = .; + KEEP(*(.service_entry)) + __service_entry_end = .; + + . = ALIGN(4); + __view_entry_table = .; + KEEP(*(.view_entry)) + __view_entry_end = .; + + } GROUP_LINK_IN(ROMABLE_REGION) + +#ifdef CONFIG_SENSOR_ALGO + +#include + +#endif + + SECTION_PROLOGUE(_TEXT_SECTION_NAME,,) + { + __text_region_start = .; + +#include + + *(.text) + *(".text.*") + *(.gnu.linkonce.t.*) + /* + * These are here according to 'arm-zephyr-elf-ld --verbose', + * after .gnu.linkonce.t.* + */ + *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) + + } GROUP_LINK_IN(ROMABLE_REGION) + + __text_region_end = .; + +/*#if defined (CONFIG_CPLUSPLUS)*/ + SECTION_PROLOGUE(.ARM.extab,,) + { + /* + * .ARM.extab section containing exception unwinding information. + */ + *(.ARM.extab* .gnu.linkonce.armextab.*) + } GROUP_LINK_IN(ROMABLE_REGION) +/*#endif*/ + + SECTION_PROLOGUE(.ARM.exidx,,) + { + /* + * This section, related to stack and exception unwinding, is placed + * explicitly to prevent it from being shared between multiple regions. + * It must be defined for gcc to support 64-bit math and avoid + * section overlap. + */ + __start_unwind_idx = .; + __exidx_start = .; + #if defined (__GCC_LINKER_CMD__) + *(.ARM.exidx* gnu.linkonce.armexidx.*) + #endif + __exidx_end = .; + __stop_unwind_idx = .; + } GROUP_LINK_IN(ROMABLE_REGION) + + __rodata_region_start = .; + +#include +#include + + SECTION_PROLOGUE(_RODATA_SECTION_NAME,,) + { + *(.rodata) + *(".rodata.*") + *(.gnu.linkonce.r.*) + +/* Located in generated directory. This file is populated by the + * zephyr_linker_sources() Cmake function. + */ +#include + +#ifdef CONFIG_SECTION_OVERLAY + . = ALIGN(4); + __overlay_table = .; + LONG(OVERLAY_TABLE_MAGIC) + /* overlay items count */ + LONG(7) + + /* for a1_wav_p.a */ + LONG(OVERLAY_ID_LIBAPWAV) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apwav))); + LONG(SIZEOF(.overlay.data.apwav)); + LONG(LOADADDR(.overlay.data.apwav)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apwav))); + LONG(SIZEOF(.overlay.bss.apwav)); + + /* for a1_mp3_p.a */ + LONG(OVERLAY_ID_LIBAPMP3) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apmp3))); + LONG(SIZEOF(.overlay.data.apmp3)); + LONG(LOADADDR(.overlay.data.apmp3)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apmp3))); + LONG(SIZEOF(.overlay.bss.apmp3)); + + /* for a1_ape_p.a */ + LONG(OVERLAY_ID_LIBAPAPE) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apape))); + LONG(SIZEOF(.overlay.data.apape)); + LONG(LOADADDR(.overlay.data.apape)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apape))); + LONG(SIZEOF(.overlay.bss.apape)); + + /* for a1_w13_p.a */ + LONG(OVERLAY_ID_LIBAPWMA) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apwma))); + LONG(SIZEOF(.overlay.data.apwma)); + LONG(LOADADDR(.overlay.data.apwma)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apwma))); + LONG(SIZEOF(.overlay.bss.apwma)); + + /* for a1_fla_p.a */ + LONG(OVERLAY_ID_LIBADFLA) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apfla))); + LONG(SIZEOF(.overlay.data.apfla)); + LONG(LOADADDR(.overlay.data.apfla)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apfla))); + LONG(SIZEOF(.overlay.bss.apfla)); + + /* for a1_a23_p.a */ + LONG(OVERLAY_ID_LIBAPAAC) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apaac))); + LONG(SIZEOF(.overlay.data.apaac)); + LONG(LOADADDR(.overlay.data.apaac)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apaac))); + LONG(SIZEOF(.overlay.bss.apaac)); + + . = ALIGN(4); +#endif + +#include + + /* + * For XIP images, in order to avoid the situation when __data_rom_start + * is 32-bit aligned, but the actual data is placed right after rodata + * section, which may not end exactly at 32-bit border, pad rodata + * section, so __data_rom_start points at data and it is 32-bit aligned. + * + * On non-XIP images this may enlarge image size up to 3 bytes. This + * generally is not an issue, since modern ROM and FLASH memory is + * usually 4k aligned. + */ + . = ALIGN(4); + } GROUP_LINK_IN(ROMABLE_REGION) + +#include + + __rodata_region_end = .; + MPU_ALIGN(__rodata_region_end -__rom_region_start); + __rom_region_end = .; + __rom_region_size = __rom_region_end - __rom_region_start; + + GROUP_END(ROMABLE_REGION) + + + /* + * These are here according to 'arm-zephyr-elf-ld --verbose', + * before data section. + */ + /DISCARD/ : { + *(.got.plt) + *(.igot.plt) + *(.got) + *(.igot) + } + + . = RAM_ADDR; + __ramdump_sram_start = .; + + /* Align the start of image SRAM with the + * minimum granularity required by MPU. + */ + . = ALIGN(_region_min_align); + _image_ram_start = .; + + /* ================================= sram data =================================*/ + SECTION_DATA_PROLOGUE(_SRAM_CODE_SECTION_NAME,,) + { + . = ALIGN(4); + _sram_data_start = .; + _sram_func_start = .; + *(.sleepfunc) + *(".sleepfunc.*") + *(.defunc) + *(.lvglfunc) + *(.vglite.func) + _sram_func_end = .; + }GROUP_DATA_LINK_IN(SRAM, ROMABLE_REGION) + _sram_func_ram_size = _sram_func_end - _sram_func_start; + _sram_func_rom_start = LOADADDR(_SRAM_CODE_SECTION_NAME); + + SECTION_DATA_PROLOGUE(_SRAM_DATA_SECTION_NAME,,) + { + . = ALIGN(4); + *(.sleep.data*) + }GROUP_DATA_LINK_IN(SRAM, ROMABLE_REGION) + _sram_data_end = .; + _sram_data_ram_size = _sram_data_end - _sram_data_start; + _sram_data_rom_start = LOADADDR(_SRAM_CODE_SECTION_NAME); + + /* ================================= psram data =================================*/ + OVERLAY : NOCROSSREFS + { + .overlay.data.apfla { + *a1_fla_p.a:*(.data .data.*) + } + + .overlay.data.apwma { + *a1_w13_p.a:*(.data .data.*) + } + + .overlay.data.apape { + *a1_ape_p.a:*(.data .data.*) + } + + .overlay.data.apmp3 { + *a1_mp3_p.a:*(.data .data.*) + } + + .overlay.data.apwav { + *a1_wav_p.a:*(.data .data.*) + } + + .overlay.data.apaac { + *a1_a13_p.a:*(.data .data.*) + } + } GROUP_DATA_LINK_IN(PSRAM, ROMABLE_REGION) + + __ramdump_psram_start = ALIGN(4); + + /* Located in generated directory. This file is populated by the + * zephyr_linker_sources() Cmake function. + */ + #include + SECTION_DATA_PROLOGUE(_DATA_SECTION_NAME,,) + { + __data_region_start = .; + __data_start = .; + *(.data) + *(".data.*") + *(".kernel.*") + + /* Located in generated directory. This file is populated by the + * zephyr_linker_sources() Cmake function. + */ + #include + __data_end = .; + + } GROUP_DATA_LINK_IN(PSRAM, ROMABLE_REGION) + __data_size = __data_end - __data_start; + __data_load_start = LOADADDR(_DATA_SECTION_NAME); + + __data_region_load_start = LOADADDR(_DATA_SECTION_NAME); + + #include + #include + #include + + __data_region_end = .; + + /* ================================= sram bss =================================*/ + SECTION_PROLOGUE(_SRAM_BSS_SECTION_NAME,(NOLOAD),) + { + __sram_bss_start = .; + *(.lvgl.bss*) + *(.vglite.bss*) + __sram_bss_end = .; + } GROUP_LINK_IN(SRAM) + + /* ================================= psram bss ================================= */ + OVERLAY : NOCROSSREFS + { + .overlay.bss.apfla { + *a1_fla_p.a:*(.bss .bss.* .scommon COMMON) + } + + .overlay.bss.apwma { + *a1_w13_p.a:*(.bss .bss.* .scommon COMMON) + } + + .overlay.bss.apape { + *a1_ape_p.a:*(.bss .bss.* .scommon COMMON) + } + + .overlay.bss.apmp3 { + *a1_mp3_p.a:*(.bss .bss.* .scommon COMMON) + } + + .overlay.bss.apwav { + *a1_wav_p.a:*(.bss .bss.* .scommon COMMON) + } + + .overlay.bss.apaac { + *a1_a13_p.a:*(.bss .bss.* .scommon COMMON) + } + } GROUP_LINK_IN(PSRAM) + + __psram_bss_start = .; + __bss_start = .; + SECTION_PROLOGUE(_BSS_SECTION_NAME,(NOLOAD),) + { + /* + * For performance, BSS section is assumed to be 4 byte aligned and + * a multiple of 4 bytes + */ + . = ALIGN(4); + *(.bss) + *(.bss.*) + *(.scommon) + *(COMMON) + /* + * As memory is cleared in words only, it is simpler to ensure the BSS + * section ends on a 4 byte boundary. This wastes a maximum of 3 bytes. + */ + + } GROUP_LINK_IN(PSRAM) + + SECTION_PROLOGUE(_PSRAM_BSS_SECTION_NAME,(NOLOAD),) + { + /* + * For performance, BSS section is assumed to be 4 byte aligned and + * a multiple of 4 bytes + */ + . = ALIGN(4); + *(".kernel_bss.*") + *(.bthost_bss*) + *(.btsrv_bss*) + } GROUP_LINK_IN(PSRAM) + + __bss_end = ALIGN(4); + __psram_bss_end = ALIGN(4); + + /* ================================= sram noinit ================================= */ + SECTION_PROLOGUE(_SRAM_NOINIT_SECTION_NAME,(NOLOAD),) + { + . = ALIGN(512); + __kernel_ram_start = .; + *(.srm_irq_vector*) + *(.interrupt.noinit.stack*) + *(.main.noinit.stack*) + *(.uisrv.noinit.stack*) + *(.lvgl.noinit.gpu*) + *(.spinand.bss.BLK_ARRAY*) + *(.spinand.bss.PAGE_CACHE_BUF*) + *(.system.bss.sdfs_cache*) + *(.diskio.cache.pool*) + *(.jpeg.bss.temp_buffer*) + *(.ram.noinit*) + *(.decompress.bss.cache*) + *(.ram.noinit.stack*) + *(.audio.bss.ouput_pcm*) + *(.audio.bss.input_pcm*) + *(.act_s2_not_save_mem*) + + __ramdump_sram_end = ALIGN(4); + + *(.lvgl.noinit.vdb*) + __kernel_ram_save_end = .; + + }GROUP_LINK_IN(SRAM) + + SECTION_PROLOGUE(_SRAM_SLEEP_SHUTDOWN_SECTION_NAME,(NOLOAD),) + { + . = ALIGN(512); + _sleep_shutdown_ram_start = .; + *(.sram.noinit.sufacebuffer*) + _sleep_shutdown_ram_end = .; + }GROUP_LINK_IN(SRAM) + +#ifdef CONFIG_SIM_FLASH_ACTS + SECTION_PROLOGUE(SIM_ACTLOG,(NOLOAD),) + { + . = ALIGN(4); + __sim_flash_ram_start = .; + *(.sram.noinit.actlog*) + __sim_flash_ram_end = .; + }GROUP_LINK_IN(SRAM) +#endif + + /* ================================= psram noinit ================================= */ + SECTION_PROLOGUE(_NOINIT_SECTION_NAME,(NOLOAD),) + { + /* + * This section is used for non-initialized objects that + * will not be cleared during the boot process. + */ + *(.noinit) + *(".noinit.*") + *(".kernel_noinit.*") + + /* Located in generated directory. This file is populated by the + * zephyr_linker_sources() Cmake function. + */ +#include +#ifdef CONFIG_SOC_NOINIT_LD +#include +#endif + + } GROUP_LINK_IN(PSRAM) + + SECTION_PROLOGUE(_PRAM_NOINIT_SECTION_NAME, (NOLOAD),SUBALIGN(64)) + { + *(.lvgl.noinit.malloc*) + *(.vglite.noinit.mem_pool*) + *(.vglite.noinit.malloc*) +#ifdef CONFIG_VIDEO_PLAYER + *(.VIDEO_PSRAM_REGION*) +#endif + __ramdump_psram_end = ALIGN(4); + + *(.UI_PSRAM_REGION*) + *(.RES_PSRAM_REGION*) + *(.BMPFONT_PSRAM_REGION*) + *(.font.bss.cache*) + *(.tile.bss.cache*) + } GROUP_LINK_IN(PSRAM) + +#ifdef CONFIG_DEBUG_TRACEDUMP + SECTION_PROLOGUE(_TRACEDUMP_SECTION_NAME,(NOLOAD),) + { + __tracedump_ram_start = .; + . = . + 0x10000; + __tracedump_ram_end = .; + } GROUP_LINK_IN(PSRAM) +#endif + + /* Define linker symbols */ + _image_ram_end = .; + __kernel_ram_end = RAM_ADDR + RAM_SIZE; + __kernel_ram_size = __kernel_ram_end - __kernel_ram_start; + + SECTION_PROLOGUE(_ATT_RUNTIME_DATA_SECTION_NAME,(NOLOAD),) + { + /* + * For att runtime data + */ + . = ALIGN(4); + KEEP(*(.attruntimedata*)) + }GROUP_LINK_IN(DSP_SRAM) + + /* ================================= share ram noinit ================================= */ + SECTION_DATA_PROLOGUE(_SHARE_RAM_BSS_SECTION_NAME, (NOLOAD),SUBALIGN(4)) + { + __share_ram_start = .; + *(.DSP_SHARE_RAM*) + } GROUP_LINK_IN(SHARE_RAM) + __share_ram_end = .; + + _end = .; /* end of image */ + + /* Located in generated directory. This file is populated by the + * zephyr_linker_sources() Cmake function. + */ +#include + +#include + + /DISCARD/ : { *(.note.GNU-stack) } + + SECTION_PROLOGUE(.ARM.attributes, 0,) + { + KEEP(*(.ARM.attributes)) + KEEP(*(.gnu.attributes)) + } + + /* Must be last in romable region */ + SECTION_PROLOGUE(.last_section,(NOLOAD),) + { + + } GROUP_LINK_IN(ROMABLE_REGION) + + /* To provide the image size as a const expression, + * calculate this value here. */ + _flash_used = LOADADDR(.last_section) - __rom_region_start; + +} diff --git a/action_technology_sdk/hello_world/linker_no_psram.ld b/action_technology_sdk/hello_world/linker_no_psram.ld new file mode 100644 index 00000000..c34ed8ef --- /dev/null +++ b/action_technology_sdk/hello_world/linker_no_psram.ld @@ -0,0 +1,575 @@ +/* + * Copyright (c) 2013-2014 Wind River Systems, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief Linker command/script file + * + * Linker script for the Cortex-M platforms. + */ + +#include +#include +#include + +#include +#include + +#ifdef CONFIG_SECTION_OVERLAY +#include +#endif + +/* physical address of RAM */ +#define ROMABLE_REGION FLASH +#define RAMABLE_REGION SRAM + +#define ROM_ADDR (CONFIG_FLASH_BASE_ADDRESS + CONFIG_FLASH_LOAD_OFFSET) +#define ROM_SIZE (CONFIG_FLASH_SIZE*1K - CONFIG_FLASH_LOAD_OFFSET) + +#define RAM_SIZE (CONFIG_SRAM_SIZE * 1K) +#define RAM_ADDR CONFIG_SRAM_BASE_ADDRESS + +/* Set alignment to CONFIG_ARM_MPU_REGION_MIN_ALIGN_AND_SIZE + * to make linker section alignment comply with MPU granularity. + */ +#if defined(CONFIG_ARM_MPU_REGION_MIN_ALIGN_AND_SIZE) +_region_min_align = CONFIG_ARM_MPU_REGION_MIN_ALIGN_AND_SIZE; +#else +/* If building without MPU support, use default 4-byte alignment. */ +_region_min_align = 4; +#endif + +#define MPU_ALIGN(region_size) . = ALIGN(_region_min_align) + +MEMORY +{ + FLASH (rx) : ORIGIN = ROM_ADDR, LENGTH = ROM_SIZE + SRAM (wx) : ORIGIN = CONFIG_SRAM_BASE_ADDRESS, LENGTH = RAM_SIZE + SPI_CACHE (wx) : ORIGIN = 0x2FF58000, LENGTH = 0x8000 + SHARE_RAM (wx) : ORIGIN = 0x2FF1AE00, LENGTH = 0x51FF + DSP_SRAM (wx) : ORIGIN = 0x30044000, LENGTH = 0x14000 + + /* Used by and documented in include/linker/intlist.ld */ + IDT_LIST (wx) : ORIGIN = (RAM_ADDR + RAM_SIZE), LENGTH = 2K +} + +ENTRY(CONFIG_KERNEL_ENTRY) + +SECTIONS +{ + +#include + + /* + * .plt and .iplt are here according to 'arm-zephyr-elf-ld --verbose', + * before text section. + */ + /DISCARD/ : + { + *(.plt) + } + + /DISCARD/ : + { + *(.iplt) + } + + GROUP_START(ROMABLE_REGION) + + __rom_region_start = ROM_ADDR; + + SECTION_PROLOGUE(rom_start,,) + { + +/* Located in generated directory. This file is populated by calling + * zephyr_linker_sources(ROM_START ...). This typically contains the vector + * table and debug information. + */ +#include + + } GROUP_LINK_IN(ROMABLE_REGION) + + SECTION_PROLOGUE(img_head,(ROM_ADDR+0x200),) AT (ROM_ADDR+0x200) + { + KEEP(*(.img_head*)) + } GROUP_LINK_IN(ROMABLE_REGION) + + SECTION_PROLOGUE(_ACTIONS_RODATA_SECTION_NAME,,) + { + . = ALIGN(4); + __app_entry_table = .; + KEEP(*(.app_entry)) + __app_entry_end = .; + + . = ALIGN(4); + __service_entry_table = .; + KEEP(*(.service_entry)) + __service_entry_end = .; + + . = ALIGN(4); + __view_entry_table = .; + KEEP(*(.view_entry)) + __view_entry_end = .; + + } GROUP_LINK_IN(ROMABLE_REGION) + +#ifdef CONFIG_SENSOR_ALGO + +#include + +#endif + + SECTION_PROLOGUE(_TEXT_SECTION_NAME,,) + { + __text_region_start = .; + +#include + + *(.text) + *(".text.*") + *(.gnu.linkonce.t.*) + /* + * These are here according to 'arm-zephyr-elf-ld --verbose', + * after .gnu.linkonce.t.* + */ + *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) + + } GROUP_LINK_IN(ROMABLE_REGION) + + __text_region_end = .; + +/*#if defined (CONFIG_CPLUSPLUS)*/ + SECTION_PROLOGUE(.ARM.extab,,) + { + /* + * .ARM.extab section containing exception unwinding information. + */ + *(.ARM.extab* .gnu.linkonce.armextab.*) + } GROUP_LINK_IN(ROMABLE_REGION) +/*#endif*/ + + SECTION_PROLOGUE(.ARM.exidx,,) + { + /* + * This section, related to stack and exception unwinding, is placed + * explicitly to prevent it from being shared between multiple regions. + * It must be defined for gcc to support 64-bit math and avoid + * section overlap. + */ + __start_unwind_idx = .; + __exidx_start = .; + #if defined (__GCC_LINKER_CMD__) + *(.ARM.exidx* gnu.linkonce.armexidx.*) + #endif + __exidx_end = .; + __stop_unwind_idx = .; + } GROUP_LINK_IN(ROMABLE_REGION) + + __rodata_region_start = .; + +#include +#include + + SECTION_PROLOGUE(_RODATA_SECTION_NAME,,) + { + *(.rodata) + *(".rodata.*") + *(.gnu.linkonce.r.*) + +/* Located in generated directory. This file is populated by the + * zephyr_linker_sources() Cmake function. + */ +#include + +#ifdef CONFIG_SECTION_OVERLAY + . = ALIGN(4); + __overlay_table = .; + LONG(OVERLAY_TABLE_MAGIC) + /* overlay items count */ + LONG(7) + + /* for a1_wav_p.a */ + LONG(OVERLAY_ID_LIBAPWAV) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apwav))); + LONG(SIZEOF(.overlay.data.apwav)); + LONG(LOADADDR(.overlay.data.apwav)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apwav))); + LONG(SIZEOF(.overlay.bss.apwav)); + + /* for a1_mp3_p.a */ + LONG(OVERLAY_ID_LIBAPMP3) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apmp3))); + LONG(SIZEOF(.overlay.data.apmp3)); + LONG(LOADADDR(.overlay.data.apmp3)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apmp3))); + LONG(SIZEOF(.overlay.bss.apmp3)); + + /* for a1_ape_p.a */ + LONG(OVERLAY_ID_LIBAPAPE) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apape))); + LONG(SIZEOF(.overlay.data.apape)); + LONG(LOADADDR(.overlay.data.apape)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apape))); + LONG(SIZEOF(.overlay.bss.apape)); + + /* for a1_w13_p.a */ + LONG(OVERLAY_ID_LIBAPWMA) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apwma))); + LONG(SIZEOF(.overlay.data.apwma)); + LONG(LOADADDR(.overlay.data.apwma)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apwma))); + LONG(SIZEOF(.overlay.bss.apwma)); + + /* for a1_fla_p.a */ + LONG(OVERLAY_ID_LIBADFLA) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apfla))); + LONG(SIZEOF(.overlay.data.apfla)); + LONG(LOADADDR(.overlay.data.apfla)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apfla))); + LONG(SIZEOF(.overlay.bss.apfla)); + + /* for a1_a23_p.a */ + LONG(OVERLAY_ID_LIBAPAAC) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apaac))); + LONG(SIZEOF(.overlay.data.apaac)); + LONG(LOADADDR(.overlay.data.apaac)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apaac))); + LONG(SIZEOF(.overlay.bss.apaac)); + + . = ALIGN(4); +#endif + +#include + + /* + * For XIP images, in order to avoid the situation when __data_rom_start + * is 32-bit aligned, but the actual data is placed right after rodata + * section, which may not end exactly at 32-bit border, pad rodata + * section, so __data_rom_start points at data and it is 32-bit aligned. + * + * On non-XIP images this may enlarge image size up to 3 bytes. This + * generally is not an issue, since modern ROM and FLASH memory is + * usually 4k aligned. + */ + . = ALIGN(4); + } GROUP_LINK_IN(ROMABLE_REGION) + +#include + + __rodata_region_end = .; + MPU_ALIGN(__rodata_region_end -__rom_region_start); + __rom_region_end = .; + __rom_region_size = __rom_region_end - __rom_region_start; + + GROUP_END(ROMABLE_REGION) + + + /* + * These are here according to 'arm-zephyr-elf-ld --verbose', + * before data section. + */ + /DISCARD/ : { + *(.got.plt) + *(.igot.plt) + *(.got) + *(.igot) + } + + + /* Align the start of image SRAM with the + * minimum granularity required by MPU. + */ + . = ALIGN(_region_min_align); + _image_ram_start = .; + SECTION_PROLOGUE(_SRAM_SLEEP_SHUTDOWN_SECTION_NAME,(NOLOAD),) + { + . = ALIGN(512); + _sleep_shutdown_ram_start = .; + *(".bss.parser_chuck_buffer*") + *(".bss.Decoder*") + *(".bss.g_tmpbuf*") + *(".bss.parser_stack") + *(".bss.codec_stack") + *(".bss.storage_block_buff*") + *(.audio.bss.ouput_pcm*) + *(.audio.bss.input_pcm*) + *(.trace.printk_buffer.noinit*) + _sleep_shutdown_ram_end = .; + . = ALIGN(32 * 1024); + }GROUP_LINK_IN(SPI_CACHE) + + . = RAM_ADDR; + __ramdump_sram_start = .; + + SECTION_DATA_PROLOGUE(_SRAM_CODE_SECTION_NAME,,) + { + _sram_data_start = .; + _sram_func_start = .; + *(.sleepfunc) + *(".sleepfunc.*") + *(.defunc) + *(.lvglfunc) + *(.vglite.func) + _sram_func_end = .; + }GROUP_DATA_LINK_IN(SRAM, ROMABLE_REGION) + _sram_func_ram_size = _sram_func_end - _sram_func_start; + _sram_func_rom_start = LOADADDR(_SRAM_CODE_SECTION_NAME); + + SECTION_DATA_PROLOGUE(_SRAM_DATA_SECTION_NAME,,) + { + . = ALIGN(4); + *(.sleep.data*) + }GROUP_DATA_LINK_IN(SRAM, ROMABLE_REGION) + _sram_data_end = .; + _sram_data_ram_size = _sram_data_end - _sram_data_start; + _sram_data_rom_start = LOADADDR(_SRAM_CODE_SECTION_NAME); + + OVERLAY : NOCROSSREFS + { + .overlay.data.apfla { + *a1_fla_p.a:*(.data .data.*) + } + + .overlay.data.apwma { + *a1_w13_p.a:*(.data .data.*) + } + + .overlay.data.apape { + *a1_ape_p.a:*(.data .data.*) + } + + .overlay.data.apmp3 { + *a1_mp3_p.a:*(.data .data.*) + } + + .overlay.data.apwav { + *a1_wav_p.a:*(.data .data.*) + } + + .overlay.data.apaac { + *a1_a13_p.a:*(.data .data.*) + } + } GROUP_DATA_LINK_IN(SRAM, ROMABLE_REGION) + + + /* Located in generated directory. This file is populated by the + * zephyr_linker_sources() Cmake function. + */ + #include + SECTION_DATA_PROLOGUE(_DATA_SECTION_NAME,,) + { + __data_region_start = .; + __data_start = .; + *(.data) + *(".data.*") + *(".kernel.*") + + /* Located in generated directory. This file is populated by the + * zephyr_linker_sources() Cmake function. + */ + #include + __data_end = .; + + } GROUP_DATA_LINK_IN(SRAM, ROMABLE_REGION) + __data_size = __data_end - __data_start; + __data_load_start = LOADADDR(_DATA_SECTION_NAME); + + __data_region_load_start = LOADADDR(_DATA_SECTION_NAME); + + #include + #include + #include + + __data_region_end = .; + + OVERLAY : NOCROSSREFS + { + .overlay.bss.apfla { + *a1_fla_p.a:*(.bss .bss.* .scommon COMMON) + } + + .overlay.bss.apwma { + *a1_w13_p.a:*(.bss .bss.* .scommon COMMON) + } + + .overlay.bss.apape { + *a1_ape_p.a:*(.bss .bss.* .scommon COMMON) + } + + .overlay.bss.apmp3 { + *a1_mp3_p.a:*(.bss .bss.* .scommon COMMON) + } + + .overlay.bss.apwav { + *a1_wav_p.a:*(.bss .bss.* .scommon COMMON) + } + + .overlay.bss.apaac { + *a1_a13_p.a:*(.bss .bss.* .scommon COMMON) + } + } GROUP_LINK_IN(SRAM) + + SECTION_PROLOGUE(_BSS_SECTION_NAME,(NOLOAD),) + { + /* + * For performance, BSS section is assumed to be 4 byte aligned and + * a multiple of 4 bytes + */ + . = ALIGN(4); + __bss_start = .; + *(".kernel_bss.*") + *(.scommon) + *(.bss) + *(".bss.*") + *(COMMON) + *(.bthost_bss*) + *(.btsrv_bss*) + *(".bss.format_check_buf*") + *(.spinand.bss.BLK_ARRAY*) + *(.spinand.bss.PAGE_CACHE_BUF*) + *(.lvgl.bss*) + *(.vglite.bss*) + /* + * As memory is cleared in words only, it is simpler to ensure the BSS + * section ends on a 4 byte boundary. This wastes a maximum of 3 bytes. + */ + __bss_end = ALIGN(4); + } GROUP_LINK_IN(SRAM) + + + SECTION_PROLOGUE(_ATT_RUNTIME_DATA_SECTION_NAME,(NOLOAD),) + { + /* + * For att runtime data + */ + . = ALIGN(4); + KEEP(*(.attruntimedata*)) + }GROUP_LINK_IN(DSP_SRAM) + + SECTION_PROLOGUE(_NOINIT_SECTION_NAME,(NOLOAD),) + { + /* + * This section is used for non-initialized objects that + * will not be cleared during the boot process. + */ +#ifdef CONFIG_IRQ_VECTOR_IN_SRAM + *(.srm_irq_vector*) +#endif + *(.noinit) + *(".noinit.*") + *(".kernel_noinit.*") + *(.lvgl.noinit.gpu*) + *(.vglite.noinit.mem_pool*) + *(.sys.noinit.heap*) + *(.interrupt.noinit.stack*) + *(.main.noinit.stack*) + *(.bat_work_queue.noinit.stack*) + *(.app.noinit.stack*) + *(.diskio.noinit.stack*) + *(.ram.noinit*) + *(.media.noinit.stack*) + *(.media.noinit.heap*) + *(.bthost.noinit.stack*) + *(.uisrv.noinit.stack*) + *(.diskio.cache.pool*) + *(.diskio.noinit.cache_pool*) + *(.osal.noinit.msg_pool*) + *(.sdfs.cache.pool*) + *(.trace.g_bk_trace.noinit*) + *(.ui.noinit.font_cache*) + *(.system.bss.sdfs_cache*) + *(.lvgl.noinit.malloc*) + *(.act_s2_not_save_mem*) + + __ramdump_sram_end = ALIGN(4); + + *(.lvgl.noinit.vdb*) + *(.UI_PSRAM_REGION*) + *(.RES_PSRAM_REGION*) + *(.BMPFONT_PSRAM_REGION*) + *(.decompress.bss.cache*) + *(.font.bss.cache*) + *(.tile.bss.cache*) + + /* Located in generated directory. This file is populated by the + * zephyr_linker_sources() Cmake function. + */ + #include + } GROUP_LINK_IN(SRAM) + +#ifdef CONFIG_DEBUG_TRACEDUMP + SECTION_PROLOGUE(_TRACEDUMP_SECTION_NAME,(NOLOAD),) + { + __tracedump_ram_start = .; + . = . + 0x8000; + __tracedump_ram_end = .; + } GROUP_LINK_IN(SRAM) +#endif + + SECTION_PROLOGUE(SIM_ACTLOG,(NOLOAD),) + { + __sim_flash_ram_start = .; + *(.sram.noinit.actlog*) + __sim_flash_ram_end = .; + }GROUP_LINK_IN(SRAM) + + /* Define linker symbols */ + + _image_ram_end = .; + + SECTION_DATA_PROLOGUE(_SHARE_RAM_BSS_SECTION_NAME, (NOLOAD),SUBALIGN(4)) + { + __share_ram_start = .; + *(.DSP_SHARE_RAM*) + } GROUP_LINK_IN(SHARE_RAM) + __share_ram_end = .; + + _end = .; /* end of image */ + + /* Located in generated directory. This file is populated by the + * zephyr_linker_sources() Cmake function. + */ +#include + +#include + + /DISCARD/ : { *(.note.GNU-stack) } + + SECTION_PROLOGUE(.ARM.attributes, 0,) + { + KEEP(*(.ARM.attributes)) + KEEP(*(.gnu.attributes)) + } + + /* Must be last in romable region */ + SECTION_PROLOGUE(.last_section,(NOLOAD),) + { + + } GROUP_LINK_IN(ROMABLE_REGION) + + /* To provide the image size as a const expression, + * calculate this value here. */ + _flash_used = LOADADDR(.last_section) - __rom_region_start; + +} diff --git a/action_technology_sdk/hello_world/linker_psram_4m.ld b/action_technology_sdk/hello_world/linker_psram_4m.ld new file mode 100644 index 00000000..0d8a61a7 --- /dev/null +++ b/action_technology_sdk/hello_world/linker_psram_4m.ld @@ -0,0 +1,620 @@ +/* + * Copyright (c) 2013-2014 Wind River Systems, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief Linker command/script file + * + * Linker script for the Cortex-M platforms. + */ + +#include +#include +#include + +#include +#include + +#ifdef CONFIG_SECTION_OVERLAY +#include +#endif + +/* physical address of RAM */ +#define ROMABLE_REGION FLASH +#define RAMABLE_REGION PSRAM + +#define ROM_ADDR (CONFIG_FLASH_BASE_ADDRESS + CONFIG_FLASH_LOAD_OFFSET) +#define ROM_SIZE (CONFIG_FLASH_SIZE*1K - CONFIG_FLASH_LOAD_OFFSET) + +#define RAM_SIZE (CONFIG_SRAM_SIZE * 1K) +#define RAM_ADDR CONFIG_SRAM_BASE_ADDRESS + +/* Set alignment to CONFIG_ARM_MPU_REGION_MIN_ALIGN_AND_SIZE + * to make linker section alignment comply with MPU granularity. + */ +#if defined(CONFIG_ARM_MPU_REGION_MIN_ALIGN_AND_SIZE) +_region_min_align = CONFIG_ARM_MPU_REGION_MIN_ALIGN_AND_SIZE; +#else +/* If building without MPU support, use default 4-byte alignment. */ +_region_min_align = 4; +#endif + +#define MPU_ALIGN(region_size) . = ALIGN(_region_min_align) + +MEMORY +{ + FLASH (rx) : ORIGIN = ROM_ADDR, LENGTH = ROM_SIZE + SRAM (wx) : ORIGIN = CONFIG_SRAM_BASE_ADDRESS, LENGTH = RAM_SIZE + PSRAM (wx) : ORIGIN = CONFIG_PSRAM_BASE_ADDRESS, LENGTH = CONFIG_PSRAM_SIZE * 1K + SHARE_RAM (wx) : ORIGIN = 0x2FF1AE00, LENGTH = 0x51FF + DSP_SRAM (wx) : ORIGIN = 0x30044000, LENGTH = 0x14000 + + /* Used by and documented in include/linker/intlist.ld */ + IDT_LIST (wx) : ORIGIN = (RAM_ADDR + RAM_SIZE), LENGTH = 2K +} + +ENTRY(CONFIG_KERNEL_ENTRY) + +SECTIONS +{ + +#include + + /* + * .plt and .iplt are here according to 'arm-zephyr-elf-ld --verbose', + * before text section. + */ + /DISCARD/ : + { + *(.plt) + } + + /DISCARD/ : + { + *(.iplt) + } + + GROUP_START(ROMABLE_REGION) + + __rom_region_start = ROM_ADDR; + + SECTION_PROLOGUE(rom_start,,) + { + +/* Located in generated directory. This file is populated by calling + * zephyr_linker_sources(ROM_START ...). This typically contains the vector + * table and debug information. + */ +#include + + } GROUP_LINK_IN(ROMABLE_REGION) + + SECTION_PROLOGUE(img_head,(ROM_ADDR+0x200),) AT (ROM_ADDR+0x200) + { + KEEP(*(.img_head*)) + } GROUP_LINK_IN(ROMABLE_REGION) + + SECTION_PROLOGUE(_ACTIONS_RODATA_SECTION_NAME,,) + { + . = ALIGN(4); + __app_entry_table = .; + KEEP(*(.app_entry)) + __app_entry_end = .; + + . = ALIGN(4); + __service_entry_table = .; + KEEP(*(.service_entry)) + __service_entry_end = .; + + . = ALIGN(4); + __view_entry_table = .; + KEEP(*(.view_entry)) + __view_entry_end = .; + + } GROUP_LINK_IN(ROMABLE_REGION) + +#ifdef CONFIG_SENSOR_ALGO + +#include + +#endif + + SECTION_PROLOGUE(_TEXT_SECTION_NAME,,) + { + __text_region_start = .; + +#include + + *(.text) + *(".text.*") + *(.gnu.linkonce.t.*) + /* + * These are here according to 'arm-zephyr-elf-ld --verbose', + * after .gnu.linkonce.t.* + */ + *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx) + + } GROUP_LINK_IN(ROMABLE_REGION) + + __text_region_end = .; + +/*#if defined (CONFIG_CPLUSPLUS)*/ + SECTION_PROLOGUE(.ARM.extab,,) + { + /* + * .ARM.extab section containing exception unwinding information. + */ + *(.ARM.extab* .gnu.linkonce.armextab.*) + } GROUP_LINK_IN(ROMABLE_REGION) +/*#endif*/ + + SECTION_PROLOGUE(.ARM.exidx,,) + { + /* + * This section, related to stack and exception unwinding, is placed + * explicitly to prevent it from being shared between multiple regions. + * It must be defined for gcc to support 64-bit math and avoid + * section overlap. + */ + __start_unwind_idx = .; + __exidx_start = .; + #if defined (__GCC_LINKER_CMD__) + *(.ARM.exidx* gnu.linkonce.armexidx.*) + #endif + __exidx_end = .; + __stop_unwind_idx = .; + } GROUP_LINK_IN(ROMABLE_REGION) + + __rodata_region_start = .; + +#include +#include + + SECTION_PROLOGUE(_RODATA_SECTION_NAME,,) + { + *(.rodata) + *(".rodata.*") + *(.gnu.linkonce.r.*) + +/* Located in generated directory. This file is populated by the + * zephyr_linker_sources() Cmake function. + */ +#include + +#ifdef CONFIG_SECTION_OVERLAY + . = ALIGN(4); + __overlay_table = .; + LONG(OVERLAY_TABLE_MAGIC) + /* overlay items count */ + LONG(7) + + /* for a1_wav_p.a */ + LONG(OVERLAY_ID_LIBAPWAV) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apwav))); + LONG(SIZEOF(.overlay.data.apwav)); + LONG(LOADADDR(.overlay.data.apwav)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apwav))); + LONG(SIZEOF(.overlay.bss.apwav)); + + /* for a1_mp3_p.a */ + LONG(OVERLAY_ID_LIBAPMP3) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apmp3))); + LONG(SIZEOF(.overlay.data.apmp3)); + LONG(LOADADDR(.overlay.data.apmp3)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apmp3))); + LONG(SIZEOF(.overlay.bss.apmp3)); + + /* for a1_ape_p.a */ + LONG(OVERLAY_ID_LIBAPAPE) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apape))); + LONG(SIZEOF(.overlay.data.apape)); + LONG(LOADADDR(.overlay.data.apape)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apape))); + LONG(SIZEOF(.overlay.bss.apape)); + + /* for a1_w13_p.a */ + LONG(OVERLAY_ID_LIBAPWMA) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apwma))); + LONG(SIZEOF(.overlay.data.apwma)); + LONG(LOADADDR(.overlay.data.apwma)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apwma))); + LONG(SIZEOF(.overlay.bss.apwma)); + + /* for a1_fla_p.a */ + LONG(OVERLAY_ID_LIBADFLA) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apfla))); + LONG(SIZEOF(.overlay.data.apfla)); + LONG(LOADADDR(.overlay.data.apfla)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apfla))); + LONG(SIZEOF(.overlay.bss.apfla)); + + /* for a1_a23_p.a */ + LONG(OVERLAY_ID_LIBAPAAC) + LONG(0); + LONG(0); + LONG(0); + LONG(ABSOLUTE(ADDR(.overlay.data.apaac))); + LONG(SIZEOF(.overlay.data.apaac)); + LONG(LOADADDR(.overlay.data.apaac)); + LONG(ABSOLUTE(ADDR(.overlay.bss.apaac))); + LONG(SIZEOF(.overlay.bss.apaac)); + + . = ALIGN(4); +#endif + +#include + + /* + * For XIP images, in order to avoid the situation when __data_rom_start + * is 32-bit aligned, but the actual data is placed right after rodata + * section, which may not end exactly at 32-bit border, pad rodata + * section, so __data_rom_start points at data and it is 32-bit aligned. + * + * On non-XIP images this may enlarge image size up to 3 bytes. This + * generally is not an issue, since modern ROM and FLASH memory is + * usually 4k aligned. + */ + . = ALIGN(4); + } GROUP_LINK_IN(ROMABLE_REGION) + +#include + + __rodata_region_end = .; + MPU_ALIGN(__rodata_region_end -__rom_region_start); + __rom_region_end = .; + __rom_region_size = __rom_region_end - __rom_region_start; + + GROUP_END(ROMABLE_REGION) + + + /* + * These are here according to 'arm-zephyr-elf-ld --verbose', + * before data section. + */ + /DISCARD/ : { + *(.got.plt) + *(.igot.plt) + *(.got) + *(.igot) + } + + . = RAM_ADDR; + __ramdump_sram_start = .; + + /* Align the start of image SRAM with the + * minimum granularity required by MPU. + */ + . = ALIGN(_region_min_align); + _image_ram_start = .; + + /* ================================= sram data =================================*/ + SECTION_DATA_PROLOGUE(_SRAM_CODE_SECTION_NAME,,) + { + . = ALIGN(4); + _sram_data_start = .; + _sram_func_start = .; + *(.sleepfunc) + *(".sleepfunc.*") + *(.defunc) + *(.lvglfunc) + *(.vglite.func) + _sram_func_end = .; + }GROUP_DATA_LINK_IN(SRAM, ROMABLE_REGION) + _sram_func_ram_size = _sram_func_end - _sram_func_start; + _sram_func_rom_start = LOADADDR(_SRAM_CODE_SECTION_NAME); + + SECTION_DATA_PROLOGUE(_SRAM_DATA_SECTION_NAME,,) + { + . = ALIGN(4); + *(.sleep.data*) + }GROUP_DATA_LINK_IN(SRAM, ROMABLE_REGION) + _sram_data_end = .; + _sram_data_ram_size = _sram_data_end - _sram_data_start; + _sram_data_rom_start = LOADADDR(_SRAM_CODE_SECTION_NAME); + + /* ================================= psram data =================================*/ + OVERLAY : NOCROSSREFS + { + .overlay.data.apfla { + *a1_fla_p.a:*(.data .data.*) + } + + .overlay.data.apwma { + *a1_w13_p.a:*(.data .data.*) + } + + .overlay.data.apape { + *a1_ape_p.a:*(.data .data.*) + } + + .overlay.data.apmp3 { + *a1_mp3_p.a:*(.data .data.*) + } + + .overlay.data.apwav { + *a1_wav_p.a:*(.data .data.*) + } + + .overlay.data.apaac { + *a1_a13_p.a:*(.data .data.*) + } + } GROUP_DATA_LINK_IN(PSRAM, ROMABLE_REGION) + + __ramdump_psram_start = ALIGN(4); + + /* Located in generated directory. This file is populated by the + * zephyr_linker_sources() Cmake function. + */ + #include + SECTION_DATA_PROLOGUE(_DATA_SECTION_NAME,,) + { + __data_region_start = .; + __data_start = .; + *(.data) + *(".data.*") + *(".kernel.*") + + /* Located in generated directory. This file is populated by the + * zephyr_linker_sources() Cmake function. + */ + #include + __data_end = .; + + } GROUP_DATA_LINK_IN(PSRAM, ROMABLE_REGION) + __data_size = __data_end - __data_start; + __data_load_start = LOADADDR(_DATA_SECTION_NAME); + + __data_region_load_start = LOADADDR(_DATA_SECTION_NAME); + + #include + #include + #include + + __data_region_end = .; + /* ================================= sram bss =================================*/ + SECTION_PROLOGUE(_SRAM_BSS_SECTION_NAME,(NOLOAD),) + { + __sram_bss_start = .; + *(.bss.sys_pool_buffer*) + *(.bss.share_stack_area*) + *(.bss.btsrv_stack_area*) + *(.bss.meidasrv_stack_area*) + *(.bss.sensorsrv_stack_area*) + *(.bss.logsrv_stack*) + *(.bss.bat_work_stack*) + *(.bss.cache_buf*) + *(.bss.nor_cache_data*) + *(.bss.logsrv_svc_buf*) + *(.bss.heap_base*) + *(.bss.diskio_cache*) + *(.bss.state_map_table*) + *(.bss.Decoder*) + *(.bss.bt_mem_buffer*) + *(".kernel_bss.*") + *(.bthost_bss*) + *(.btsrv_bss*) + *(.lvgl.bss*) + *(.vglite.bss*) + __sram_bss_end = .; + } GROUP_LINK_IN(SRAM) + /* ================================= psram bss ================================= */ + OVERLAY : NOCROSSREFS + { + .overlay.bss.apfla { + *a1_fla_p.a:*(.bss .bss.* .scommon COMMON) + } + + .overlay.bss.apwma { + *a1_w13_p.a:*(.bss .bss.* .scommon COMMON) + } + + .overlay.bss.apape { + *a1_ape_p.a:*(.bss .bss.* .scommon COMMON) + } + + .overlay.bss.apmp3 { + *a1_mp3_p.a:*(.bss .bss.* .scommon COMMON) + } + + .overlay.bss.apwav { + *a1_wav_p.a:*(.bss .bss.* .scommon COMMON) + } + + .overlay.bss.apaac { + *a1_a13_p.a:*(.bss .bss.* .scommon COMMON) + } + } GROUP_LINK_IN(PSRAM) + + __psram_bss_start = .; + __bss_start = .; + SECTION_PROLOGUE(_BSS_SECTION_NAME,(NOLOAD),) + { + /* + * For performance, BSS section is assumed to be 4 byte aligned and + * a multiple of 4 bytes + */ + . = ALIGN(4); + *(.bss) + *(.bss.*) + *(.scommon) + *(COMMON) + /* + * As memory is cleared in words only, it is simpler to ensure the BSS + * section ends on a 4 byte boundary. This wastes a maximum of 3 bytes. + */ + + } GROUP_LINK_IN(PSRAM) + + SECTION_PROLOGUE(_PSRAM_BSS_SECTION_NAME,(NOLOAD),) + { + /* + * For performance, BSS section is assumed to be 4 byte aligned and + * a multiple of 4 bytes + */ + . = ALIGN(4); + } GROUP_LINK_IN(PSRAM) + + __bss_end = ALIGN(4); + __psram_bss_end = ALIGN(4); + + /* ================================= sram noinit ================================= */ + SECTION_PROLOGUE(_SRAM_NOINIT_SECTION_NAME,(NOLOAD),) + { + . = ALIGN(512); + __kernel_ram_start = .; + *(.srm_irq_vector*) + *(.interrupt.noinit.stack*) + *(.main.noinit.stack*) + *(.uisrv.noinit.stack*) + *(.lvgl.noinit.gpu*) + *(.spinand.bss.BLK_ARRAY*) + *(.spinand.bss.PAGE_CACHE_BUF*) + *(.system.bss.sdfs_cache*) + *(.diskio.cache.pool*) + *(.jpeg.bss.temp_buffer*) + *(.ram.noinit*) + *(.decompress.bss.cache*) + *(.ram.noinit.stack*) + *(.audio.bss.ouput_pcm*) + *(.audio.bss.input_pcm*) + *(.act_s2_not_save_mem*) + *(.lvgl.noinit.malloc*) + *(.vglite.noinit.mem_pool*) + *(.vglite.noinit.malloc*) + + __ramdump_sram_end = ALIGN(4); + + *(.lvgl.noinit.vdb*) + __kernel_ram_save_end = .; + + }GROUP_LINK_IN(SRAM) + + SECTION_PROLOGUE(_SRAM_SLEEP_SHUTDOWN_SECTION_NAME,(NOLOAD),) + { + . = ALIGN(512); + _sleep_shutdown_ram_start = .; + *(.sram.noinit.sufacebuffer*) + _sleep_shutdown_ram_end = .; + }GROUP_LINK_IN(SRAM) + +#ifdef CONFIG_SIM_FLASH_ACTS + SECTION_PROLOGUE(SIM_ACTLOG,(NOLOAD),) + { + . = ALIGN(4); + __sim_flash_ram_start = .; + *(.sram.noinit.actlog*) + __sim_flash_ram_end = .; + }GROUP_LINK_IN(SRAM) +#endif + + /* ================================= psram noinit ================================= */ + SECTION_PROLOGUE(_NOINIT_SECTION_NAME,(NOLOAD),) + { + /* + * This section is used for non-initialized objects that + * will not be cleared during the boot process. + */ + *(.noinit) + *(".noinit.*") + *(".kernel_noinit.*") + + /* Located in generated directory. This file is populated by the + * zephyr_linker_sources() Cmake function. + */ +#include +#ifdef CONFIG_SOC_NOINIT_LD +#include +#endif + + } GROUP_LINK_IN(SRAM) + + SECTION_PROLOGUE(_PRAM_NOINIT_SECTION_NAME, (NOLOAD),SUBALIGN(64)) + { + __ramdump_psram_end = ALIGN(4); + + *(.UI_PSRAM_REGION*) + *(.RES_PSRAM_REGION*) + *(.BMPFONT_PSRAM_REGION*) + *(.font.bss.cache*) + + *(.tile.bss.cache*) + + } GROUP_LINK_IN(PSRAM) + +#ifdef CONFIG_DEBUG_TRACEDUMP + SECTION_PROLOGUE(_TRACEDUMP_SECTION_NAME,(NOLOAD),) + { + __tracedump_ram_start = .; + . = . + 0x8000; + __tracedump_ram_end = .; + } GROUP_LINK_IN(PSRAM) +#endif + + /* Define linker symbols */ + _image_ram_end = .; + __kernel_ram_end = RAM_ADDR + RAM_SIZE; + __kernel_ram_size = __kernel_ram_end - __kernel_ram_start; + + SECTION_PROLOGUE(_ATT_RUNTIME_DATA_SECTION_NAME,(NOLOAD),) + { + /* + * For att runtime data + */ + . = ALIGN(4); + KEEP(*(.attruntimedata*)) + }GROUP_LINK_IN(DSP_SRAM) + + /* ================================= share ram noinit ================================= */ + SECTION_DATA_PROLOGUE(_SHARE_RAM_BSS_SECTION_NAME, (NOLOAD),SUBALIGN(4)) + { + __share_ram_start = .; + *(.DSP_SHARE_RAM*) + } GROUP_LINK_IN(SHARE_RAM) + __share_ram_end = .; + + _end = .; /* end of image */ + + /* Located in generated directory. This file is populated by the + * zephyr_linker_sources() Cmake function. + */ +#include + +#include + + /DISCARD/ : { *(.note.GNU-stack) } + + SECTION_PROLOGUE(.ARM.attributes, 0,) + { + KEEP(*(.ARM.attributes)) + KEEP(*(.gnu.attributes)) + } + + /* Must be last in romable region */ + SECTION_PROLOGUE(.last_section,(NOLOAD),) + { + + } GROUP_LINK_IN(ROMABLE_REGION) + + /* To provide the image size as a const expression, + * calculate this value here. */ + _flash_used = LOADADDR(.last_section) - __rom_region_start; + +} diff --git a/action_technology_sdk/hello_world/nvram.prop b/action_technology_sdk/hello_world/nvram.prop new file mode 100644 index 00000000..4209f5fd --- /dev/null +++ b/action_technology_sdk/hello_world/nvram.prop @@ -0,0 +1,27 @@ +# +# APPLICATION PROPERTIES +# + +# volume config +TONE_VOLUME=8 +TTS_MIN_VOLUME=2 +TTS_MAX_VOLUME=15 +BTPLAY_VOLUME=15 +BTCALL_VOLUME=15 +LOCALPLAY_VOLUME=15 + +# poweroff +AUTO_POWERDOWN=true +MAX_SILIENT_TIME=300000 + +# bluetooth +BT_PRE_NAME=LEOPARD_ +#BT_NAME=LARK_F44EFD001122 +#BT_MAC=F44EFD001122 +#BT_LE_NAME=LARK_F44EFD00038A +#BT_TEST_MODE=1 + +# end of APPLICATION PROPERTIES + +# USB UART +#USB_UART_MODE=true diff --git a/action_technology_sdk/hello_world/prebuild/ATT/SutPatch.bin b/action_technology_sdk/hello_world/prebuild/ATT/SutPatch.bin new file mode 100644 index 00000000..7b4d68d7 --- /dev/null +++ b/action_technology_sdk/hello_world/prebuild/ATT/SutPatch.bin @@ -0,0 +1 @@ +empty \ No newline at end of file diff --git a/action_technology_sdk/hello_world/prebuild/ATT/acttest.ap b/action_technology_sdk/hello_world/prebuild/ATT/acttest.ap new file mode 100644 index 00000000..7b4d68d7 --- /dev/null +++ b/action_technology_sdk/hello_world/prebuild/ATT/acttest.ap @@ -0,0 +1 @@ +empty \ No newline at end of file diff --git a/action_technology_sdk/hello_world/prebuild/ATT/att_adfu.bin b/action_technology_sdk/hello_world/prebuild/ATT/att_adfu.bin new file mode 100644 index 00000000..59260ec9 Binary files /dev/null and b/action_technology_sdk/hello_world/prebuild/ATT/att_adfu.bin differ diff --git a/action_technology_sdk/hello_world/prebuild/ATT/atttest.bin b/action_technology_sdk/hello_world/prebuild/ATT/atttest.bin new file mode 100644 index 00000000..76bd67ff Binary files /dev/null and b/action_technology_sdk/hello_world/prebuild/ATT/atttest.bin differ diff --git a/action_technology_sdk/hello_world/prebuild/ATT/config.txt b/action_technology_sdk/hello_world/prebuild/ATT/config.txt new file mode 100644 index 00000000..991a50a5 Binary files /dev/null and b/action_technology_sdk/hello_world/prebuild/ATT/config.txt differ diff --git a/action_technology_sdk/hello_world/prebuild/ATT/config.xml b/action_technology_sdk/hello_world/prebuild/ATT/config.xml new file mode 100644 index 00000000..9c04cbcd --- /dev/null +++ b/action_technology_sdk/hello_world/prebuild/ATT/config.xml @@ -0,0 +1,577 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/action_technology_sdk/hello_world/prebuild/ATT/resource.zip b/action_technology_sdk/hello_world/prebuild/ATT/resource.zip new file mode 100644 index 00000000..9aa79543 Binary files /dev/null and b/action_technology_sdk/hello_world/prebuild/ATT/resource.zip differ diff --git a/action_technology_sdk/hello_world/prebuild/config/alcfg.bin b/action_technology_sdk/hello_world/prebuild/config/alcfg.bin new file mode 100644 index 00000000..a810f911 Binary files /dev/null and b/action_technology_sdk/hello_world/prebuild/config/alcfg.bin differ diff --git a/action_technology_sdk/hello_world/prebuild/config/cfg_mic.bin b/action_technology_sdk/hello_world/prebuild/config/cfg_mic.bin new file mode 100644 index 00000000..35301906 Binary files /dev/null and b/action_technology_sdk/hello_world/prebuild/config/cfg_mic.bin differ diff --git a/action_technology_sdk/hello_world/prebuild/config/config.xml b/action_technology_sdk/hello_world/prebuild/config/config.xml new file mode 100644 index 00000000..ee65499c --- /dev/null +++ b/action_technology_sdk/hello_world/prebuild/config/config.xml @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/action_technology_sdk/hello_world/prebuild/config/config_al.h b/action_technology_sdk/hello_world/prebuild/config/config_al.h new file mode 100644 index 00000000..51aef359 --- /dev/null +++ b/action_technology_sdk/hello_world/prebuild/config/config_al.h @@ -0,0 +1,18 @@ + +#ifndef __CONFIG_AL_H__ +#define __CONFIG_AL_H__ + + +#define CFG_ID_BT_MUSIC_DAE_AL 0x60 +#define CFG_SIZE_BT_MUSIC_DAE_AL 1024 + +#define CFG_ID_BT_CALL_DAE_AL 0x61 +#define CFG_SIZE_BT_CALL_DAE_AL 512 + +#define CFG_ID_BT_CALL_QUALITY_AL 0x62 +#define CFG_SIZE_BT_CALL_QUALITY_AL 296 + + +#endif // __CONFIG_AL_H__ + + diff --git a/action_technology_sdk/hello_world/prebuild/config/config_ext.xml b/action_technology_sdk/hello_world/prebuild/config/config_ext.xml new file mode 100644 index 00000000..4fa99c84 --- /dev/null +++ b/action_technology_sdk/hello_world/prebuild/config/config_ext.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/action_technology_sdk/hello_world/prebuild/config/config_factory.xml b/action_technology_sdk/hello_world/prebuild/config/config_factory.xml new file mode 100644 index 00000000..de3ed16e --- /dev/null +++ b/action_technology_sdk/hello_world/prebuild/config/config_factory.xml @@ -0,0 +1,265 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/action_technology_sdk/hello_world/prebuild/config/configal.bin b/action_technology_sdk/hello_world/prebuild/config/configal.bin new file mode 100644 index 00000000..570696e0 Binary files /dev/null and b/action_technology_sdk/hello_world/prebuild/config/configal.bin differ diff --git a/action_technology_sdk/hello_world/prebuild/config/defcfg.bin b/action_technology_sdk/hello_world/prebuild/config/defcfg.bin new file mode 100644 index 00000000..16d64991 Binary files /dev/null and b/action_technology_sdk/hello_world/prebuild/config/defcfg.bin differ diff --git a/action_technology_sdk/hello_world/prebuild/config/extcfg.bin b/action_technology_sdk/hello_world/prebuild/config/extcfg.bin new file mode 100644 index 00000000..ad152657 Binary files /dev/null and b/action_technology_sdk/hello_world/prebuild/config/extcfg.bin differ diff --git a/action_technology_sdk/hello_world/prebuild/config/syscfg.bin b/action_technology_sdk/hello_world/prebuild/config/syscfg.bin new file mode 100644 index 00000000..ad152657 Binary files /dev/null and b/action_technology_sdk/hello_world/prebuild/config/syscfg.bin differ diff --git a/action_technology_sdk/hello_world/prebuild/config/usrcfg.bin b/action_technology_sdk/hello_world/prebuild/config/usrcfg.bin new file mode 100644 index 00000000..ad152657 Binary files /dev/null and b/action_technology_sdk/hello_world/prebuild/config/usrcfg.bin differ diff --git a/action_technology_sdk/hello_world/prebuild/fw_configuration.cfg b/action_technology_sdk/hello_world/prebuild/fw_configuration.cfg new file mode 100644 index 00000000..16a14078 --- /dev/null +++ b/action_technology_sdk/hello_world/prebuild/fw_configuration.cfg @@ -0,0 +1,36 @@ + + +//configuration +CONFIG_XML = "config.xml"; +CONFIG_COMPACT_XML = "config_factory.xml"; +CONFIG_EXT_XML = "config_ext.xml"; +CONFIG_AL_XML = "configal.bin"; + +//default configuration file +CONFIG_DEFAULT = "defcfg.bin"; + +//new modified configuration file +CONFIG_SYS = "syscfg.bin"; + +//new modified configuration file +CONFIG_NEW = "usrcfg.bin"; + +CFG_AL_PARA = "extcfg.bin"; +CFG_AL_PARA = "alcfg.bin"; + +// mic configuration file +CFG_MIC = "cfg_mic.bin"; + +// tone file name extension +TONE_FILE_KEY = "ACT, PCM, MP3"; + +// config file name keyword, config file may in temp folder or in FW +CFG_FILE_KEY = "CONFIG_DEFAULT, CONFIG_NEW, CONFIG_EXT_NEW, CFG_MIC, CFG_AL_PARA, TONE_SDFS"; + +//配置项说明,每个配置项以分号(';')分隔: 配置项名, ID, offset, length +CONFIG_PATTERN = "KEEP_USER_DATA, 0x03, 0, 1; KEEP_FACTORY_DATA, 0x03, 1, 1"; +CONFIG_PATTERN = "ERASE_ENTIRE_STORAGE, 0x03, 2, 1"; + +// OTA binary include file name +OTA_FILE_KEY = "ota.xml, app.bin, mbrec.bin, param.bin"; + diff --git a/action_technology_sdk/hello_world/prj.conf b/action_technology_sdk/hello_world/prj.conf new file mode 100644 index 00000000..457e08d6 --- /dev/null +++ b/action_technology_sdk/hello_world/prj.conf @@ -0,0 +1,149 @@ +#=========== GUI config =========== +CONFIG_SURFACE_ZERO_BUFFER=y +CONFIG_UI_MEMORY_MANAGER=y +CONFIG_UI_MEMORY_DEBUG=n +CONFIG_MEM_GUARD=n + +#actions RES manager +CONFIG_RES_MANAGER=y +CONFIG_RES_MANAGER_USE_STYLE_MMAP=y +CONFIG_RES_MANAGER_SKIP_PRELOAD=n + +#actions freetype font +CONFIG_FREETYPE_FONT=y + +#actions Bitmap font +CONFIG_BITMAP_FONT=y +CONFIG_BITMAP_FONT_SUPPORT_EMOJI=y +CONFIG_EMOJI_FONT_USE_MMAP=y + +#lvgl config +CONFIG_LVGL=y +CONFIG_LVGL_USE_BITMAP_FONT=y +CONFIG_LVGL_USE_FREETYPE_FONT=y +CONFIG_LVGL_USE_RES_MANAGER=y +CONFIG_LV_VDB_NUM=2 +CONFIG_LV_CONF_MINIMAL=y +CONFIG_LV_COLOR_DEPTH_16=y +CONFIG_LV_USE_PRIVATE_API=n +CONFIG_LV_DRAW_BUF_ALIGN=64 +CONFIG_LV_USE_DRAW_CUSTOM_GPU_INIT=y +CONFIG_LV_USE_DRAW_ACTS_DMA2D=y +CONFIG_LV_USE_DRAW_VG_LITE=y +CONFIG_LV_VG_LITE_USE_GPU_INIT=y +CONFIG_LV_VG_LITE_COMMAND_BUFFER_SIZE=32 +CONFIG_LV_VG_LITE_FLUSH_MAX_COUNT=0 +CONFIG_LV_VG_LITE_GRAD_CACHE_CNT=2 +CONFIG_LV_VG_LITE_STROKE_CACHE_CNT=1 +CONFIG_LV_USE_VECTOR_GRAPHIC=y +CONFIG_LV_BIN_DECODER_RAM_LOAD=y +CONFIG_LV_USE_ETC2=y +CONFIG_LV_USE_IMGFONT=y +CONFIG_LV_USE_SNAPSHOT=y +CONFIG_LV_FONT_DEFAULT_MONTSERRAT_48=y +CONFIG_LV_TXT_ENC_UTF8=y +CONFIG_LV_TXT_BREAK_CHARS="" +CONFIG_LV_USE_LOG=y +CONFIG_LV_USE_ASSERT_NULL=y +CONFIG_LV_USE_ASSERT_MALLOC=y +CONFIG_LV_USE_STRACE=y +CONFIG_LV_USE_STRACE_OBJ_DRAW=n +CONFIG_LV_USE_STRACE_TASK_DRAW=n +CONFIG_LV_USE_FLEX=y +CONFIG_LV_USE_GRID=y +CONFIG_LV_USE_ARC=y +CONFIG_LV_USE_BUTTON=y +CONFIG_LV_USE_BARCODE=y +CONFIG_LV_USE_CANVAS=y +CONFIG_LV_USE_CHART=y +CONFIG_LV_USE_IMAGE=y +CONFIG_LV_USE_IMAGEBUTTON=y +CONFIG_LV_USE_LABEL=y +CONFIG_LV_USE_SLIDER=y +CONFIG_LV_USE_TILEVIEW=y +CONFIG_LV_USE_QRCODE=y + +#=========== system base config =========== +CONFIG_ACTIONS_FRAMEWORK=y +CONFIG_ACTIONS_FRAMEWORK_DISPLAY=y +CONFIG_THREAD_TIMER=y +CONFIG_ACTIONS_UTILS=y +CONFIG_CORE=y +CONFIG_SYSTEM=y +CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000 +CONFIG_PRINTK_TIME_FREFIX=n +CONFIG_DMA_PRINTK_BUF_SIZE=4096 +CONFIG_SLEEP_SENSOR_RUN_ON_NOR=y +CONFIG_SLEEP_COPY_SRAM_FOR_SENSOR=n +CONFIG_SLEEP_MEMORY_CHECK_INTEGRITY=n +CONFIG_THREAD_RUNTIME_STATS=y +CONFIG_SYSTEM_SHELL=y +CONFIG_TASK_WDT=y +CONFIG_TASK_WDT_TIMEOUT=5000 + +#power config +CONFIG_POWER=y + +#input config +CONFIG_INPUT=y +CONFIG_INPUT_POINTER=y +CONFIG_INPUT_KEYPAD=y +CONFIG_ACTS_RING_BUFFER=y + +#standby config +CONFIG_SYS_STANDBY=y +CONFIG_AUTO_STANDBY_TIME_SEC=10 +CONFIG_SYS_WAKELOCK=y + +#system message config +CONFIG_NUM_MBOX_ASYNC_MSGS=35 +CONFIG_MESSAGE_DEBUG=n + +#property config +CONFIG_PROPERTY=y +CONFIG_PROPERTY_CACHE=y + +#watchdog config +CONFIG_WATCHDOG=n +CONFIG_WDOG_ACTS=n +CONFIG_WDT_MODE_RESET=n + +#dvfs config +CONFIG_DVFS=y +CONFIG_ACTS_DVFS_DYNAMIC_LEVEL=y + +#memory config +CONFIG_MEMORY=y +CONFIG_SYS_MEMORY_DEBUG=n +CONFIG_APP_USED_MEM_POOL=y +CONFIG_RAM_POOL_PAGE_NUM=9 +CONFIG_HEAP_MEM_POOL_SIZE=2560 + +#system stack config +CONFIG_MAIN_STACK_SIZE=4096 +CONFIG_IDLE_STACK_SIZE=4096 +CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 + +# sdfs config +CONFIG_SD_FS=y +CONFIG_SDFS_MANAGER=y +CONFIG_MUTIPLE_VOLUME_MANAGER=y +CONFIG_SD_FILE_MAX=24 +CONFIG_DISKIO_CACHE=n + +#=========== display config =========== +CONFIG_DISPLAY=y +CONFIG_DISPLAY_LOG_LEVEL_INF=y +CONFIG_DISPLAY_CONTROLLER=y +CONFIG_DISPLAY_ENGINE=y +CONFIG_DISPLAY_ENGINE_INSTANCE_NUM=4 +CONFIG_DMA2D_HAL=y +CONFIG_DMA2D_LITE=y +CONFIG_DISPLAY_WORK_Q=y +CONFIG_DISPLAY_WORK_Q_STACK_SIZE=1536 + +#=========== libc config =========== +CONFIG_NEWLIB_LIBC=y +CONFIG_NEWLIB_LIBC_FLOAT_PRINTF=y +CONFIG_NEWLIB_LIBC_NANO=y +CONFIG_COMPILER_OPT="-Wno-attributes -Wno-array-bounds -Wno-uninitialized" diff --git a/action_technology_sdk/hello_world/src/CMakeLists.txt b/action_technology_sdk/hello_world/src/CMakeLists.txt new file mode 100644 index 00000000..fbbdc6f7 --- /dev/null +++ b/action_technology_sdk/hello_world/src/CMakeLists.txt @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: Apache-2.0 + +zephyr_include_directories( + . +) + +target_sources(app PRIVATE + main.c + app_msg.c +) diff --git a/action_technology_sdk/hello_world/src/app_msg.c b/action_technology_sdk/hello_world/src/app_msg.c new file mode 100644 index 00000000..f9b1bbda --- /dev/null +++ b/action_technology_sdk/hello_world/src/app_msg.c @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2019 Actions Semiconductor Co, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include "app_msg.h" + +int app_msg_init(void) +{ + bool ret; + const char *name = k_thread_name_get(os_current_get()); + + ret = msg_manager_add_listener((char*)name, os_current_get()); + + return (ret ? 0 : -1); +} + +int app_msg_send(const char* receiver, uint8_t type, uint8_t cmd) +{ + bool ret; + struct app_msg msg; + + memset(&msg, 0, sizeof(msg)); + msg.type = type; + msg.cmd = cmd; + ret = send_async_msg((char*)receiver, &msg); + + return (ret ? 0 : -1); +} + diff --git a/action_technology_sdk/hello_world/src/app_msg.h b/action_technology_sdk/hello_world/src/app_msg.h new file mode 100644 index 00000000..21e48747 --- /dev/null +++ b/action_technology_sdk/hello_world/src/app_msg.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2019 Actions Semiconductor Co., Ltd + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief application message interface + */ + +#ifndef __APP_MSG_H__ +#define __APP_MSG_H__ + +#include + +// app name +#define APP_NAME "main" + +// app message type +enum APP_MSG_TYPE { + MSG_UI = MSG_APP_MESSAGE_START, + MSG_OTA, +}; + +// app message cmd +enum APP_MSG_CMD { + CMD_NULL = 0, + CMD_SCREEN_OFF, + CMD_SCREEN_ON, +}; + +int app_msg_init(void); +int app_msg_send(const char* receiver, uint8_t type, uint8_t cmd); + +#endif /* __APP_MSG_H__ */ + diff --git a/action_technology_sdk/hello_world/src/main.c b/action_technology_sdk/hello_world/src/main.c new file mode 100644 index 00000000..a6d25671 --- /dev/null +++ b/action_technology_sdk/hello_world/src/main.c @@ -0,0 +1,237 @@ +/* + * Copyright (c) 2020 Actions Technology Co., Ltd + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/********************* + * INCLUDES + *********************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef CONFIG_DVFS +#include +#endif +#include "app_msg.h" + +/********************** + * STATIC PROTOTYPES + **********************/ + +static void _disp_vsync_cb(const lvx_display_observer_t * observer, uint32_t timestamp); +static void _disp_state_cb(const lvx_display_observer_t * observer, uint32_t state); + +/********************** + * STATIC VARIABLES + **********************/ + +static const lvx_display_observer_t g_disp_observer = { + .vsync_cb = _disp_vsync_cb, + .state_cb = _disp_state_cb, +}; + +static uint8_t g_disp_active = 1; + +static K_SEM_DEFINE(g_disp_vsync_sem, 0, 1); + +/********************** + * STATIC FUNCTIONS + **********************/ + +static void _disp_vsync_cb(const lvx_display_observer_t *observer, uint32_t timestamp) +{ + k_sem_give(&g_disp_vsync_sem); +} + +static void _disp_state_cb(const lvx_display_observer_t *observer, uint32_t state) +{ + switch (state) { + case LVX_DISPLAY_STATE_OFF: + app_msg_send(APP_NAME, MSG_UI, CMD_SCREEN_OFF); + break; + case LVX_DISPLAY_STATE_ON: + app_msg_send(APP_NAME, MSG_UI, CMD_SCREEN_ON); + break; + default: + break; + } +} + +static void _keypad_callback(struct device *dev, struct input_value *val) +{ + static uint32_t last_value = 0; + + SYS_LOG_INF("type: %d, code:%d, value:%d\n", + val->keypad.type, val->keypad.code, val->keypad.value); + + if (last_value != val->keypad.value) { + // screen on + sys_wake_lock(FULL_WAKE_LOCK); + sys_wake_unlock(FULL_WAKE_LOCK); + + last_value = val->keypad.value; + } +} + +static void _keypad_init(void) +{ + struct device *onoff_dev; + + onoff_dev = (struct device *)device_get_binding(CONFIG_INPUT_DEV_ACTS_ONOFF_KEY_NAME); + if (!onoff_dev) { + SYS_LOG_ERR("cannot found key dev %s", CONFIG_INPUT_DEV_ACTS_ONOFF_KEY_NAME); + return; + } + + input_dev_enable(onoff_dev); + input_dev_register_notify(onoff_dev, _keypad_callback); +} + +static void _lvgl_init(void) +{ + /* LVGL initialize */ + lvx_port_init(); + lvx_display_add_observer(&g_disp_observer); + lvx_refr_set_manual(NULL); + + /* Set background color */ + lv_obj_set_style_bg_color(lv_screen_active(), lv_color_black(), 0); + lv_obj_set_style_bg_opa(lv_screen_active(), LV_OPA_COVER, 0); + + // init font + lvgl_bitmap_font_init(NULL); + lvgl_freetype_font_init(); +} + +static void _lvgl_set_y_anim_cb(void *label, int32_t val) +{ + static const lv_color_t test_colors[] = { + LV_COLOR_MAKE(100, 0, 50), LV_COLOR_MAKE(21, 10, 37), + LV_COLOR_MAKE(0, 100, 100), LV_COLOR_MAKE(123, 87, 199), + LV_COLOR_MAKE(100, 0, 50), LV_COLOR_MAKE(21, 10, 37), + LV_COLOR_MAKE(0, 100, 100), LV_COLOR_MAKE(123, 87, 199), + }; + static uint8_t color_idx = 0; + + if (val == 0) { + lv_obj_set_style_text_color(label, test_colors[color_idx], LV_PART_MAIN); + if (++color_idx >= ARRAY_SIZE(test_colors)) + color_idx = 0; + } + + lv_obj_set_y(label, val); +} + +static void _lvgl_anim_demo(const char* text) +{ + const lv_font_t *font = lv_font_default(); + + lv_obj_t * label = lv_label_create(lv_screen_active()); + lv_obj_align(label, LV_ALIGN_TOP_MID, 0, 0); + lv_obj_set_style_text_font(label, font, LV_PART_MAIN); + lv_obj_set_style_text_color(label, lv_color_black(), LV_PART_MAIN); + lv_label_set_text(label, text); + + lv_anim_t anim; + lv_anim_init(&anim); + lv_anim_set_time(&anim, 2000); + lv_anim_set_playback_time(&anim, 2000); + lv_anim_set_repeat_count(&anim, LV_ANIM_REPEAT_INFINITE); + lv_anim_set_var(&anim, label); + lv_anim_set_exec_cb(&anim, _lvgl_set_y_anim_cb); + lv_anim_set_values(&anim, 0, lv_obj_get_height(lv_screen_active()) - lv_font_get_line_height(font)); + lv_anim_start(&anim); +} + +static void _process_ui_msg(struct app_msg *msg) +{ + switch (msg->cmd) { + case CMD_SCREEN_OFF: + g_disp_active = 0; + break; + case CMD_SCREEN_ON: + g_disp_active = 1; + lv_obj_invalidate(lv_screen_active()); + break; + default: + break; + } +} + +/********************** + * GLOBAL FUNCTIONS + **********************/ + +int main(void) +{ + // init system + mem_manager_init(); + system_init(); + + // init app msg + app_msg_init(); + + // init lvgl + _lvgl_init(); + + _lvgl_anim_demo("Hello world!"); + + // init key device + _keypad_init(); + + system_ready(); + +#ifdef CONFIG_ACTS_DVFS_DYNAMIC_LEVEL + dvfs_unset_level(DVFS_LEVEL_HIGH_PERFORMANCE, "init"); + dvfs_set_level(DVFS_LEVEL_NORMAL, "launcher"); +#endif + + while (1) { + struct app_msg msg; + + os_strace_void(SYS_TRACE_ID_GUI_TASK); + uint32_t lv_timeout = lv_task_handler(); + os_strace_end_call(SYS_TRACE_ID_GUI_TASK); + + uint32_t tt_timeout = thread_timer_next_timeout(); + uint32_t timeout = MIN(lv_timeout, tt_timeout); + + int rc = poll_msg(&msg, &g_disp_vsync_sem, timeout); + switch (rc) { + case OS_POLL_MSG: + SYS_LOG_INF("msg type=0x%x, cmd=0x%x", msg.type, msg.cmd); + switch (msg.type) { + case MSG_UI: + _process_ui_msg(&msg); + break; + } + if (msg.callback != NULL) { + msg.callback(&msg, 0, NULL); + } + break; + + case OS_POLL_SEM: + if (g_disp_active) { + lvx_refr_all(); + } + break; + } + + thread_timer_handle_expired(); + } + + return 0; +}