Skip to content

Commit

Permalink
os, build/configs: add config for common data sections size, clean up…
Browse files Browse the repository at this point in the history
… xip elf code

1. added config for common ram size when using xip loadable apps
2. calculated heap allocation for kernel based on app ram size configs
3. added checks for 4KB (l2 page alignment) aligned for app flash and ram partitions

Signed-off-by: Abhishek Akkabathula <[email protected]>
  • Loading branch information
abhishek-samsung authored and r-prabu committed Aug 14, 2024
1 parent dc6554d commit 65e2da9
Show file tree
Hide file tree
Showing 5 changed files with 87 additions and 43 deletions.
23 changes: 12 additions & 11 deletions build/configs/rtl8730e/loadable_apps/defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ CONFIG_NUM_APPS=1
CONFIG_SUPPORT_COMMON_BINARY=y
CONFIG_COMMON_BINARY_VERSION="200204"
CONFIG_COMMON_BINARY_NAME="common"
CONFIG_COMMON_BIN_STATIC_RAMSIZE=524288
CONFIG_NUM_L2_PER_APP=4
CONFIG_BUILD_PROTECTED=y
CONFIG_BUILD_2PASS=y
Expand Down Expand Up @@ -78,6 +79,7 @@ CONFIG_ARCH_CHIP_AMEBASMART=y
CONFIG_ARCH_CHIP="amebasmart"
CONFIG_ARM_THUMB=y
CONFIG_ARM_HAVE_DPFPU32=y
CONFIG_ARM_HAVE_WFE_SEV=y
CONFIG_ARM_HAVE_NEON=y
# CONFIG_ARM_FPU_ABI_SOFT is not set
CONFIG_ARM_DPFPU32=y
Expand Down Expand Up @@ -298,11 +300,13 @@ CONFIG_BOARDCTL_RESET=y
#
CONFIG_FLASH_START_ADDR=0x8000000
CONFIG_FLASH_SIZE=16777216
CONFIG_FLASH_STATUS_BITS=0x28
CONFIG_FLASH_VSTART=0x8000000
CONFIG_TRPK_CONTAINS_MULTIPLE_BINARY=y
CONFIG_FLASH_VSTART_LOADABLE=0xe000000
# CONFIG_BOARD_FLASH_8M is not set
CONFIG_BOARD_FLASH_16M=y
CONFIG_RTL8730E_BOARD_REVISION=0
CONFIG_FLASH_STATUS_BITS=0x28

#
# SPI Flash driver
Expand All @@ -322,8 +326,6 @@ CONFIG_FLASH_MINOR=0
CONFIG_FLASH_PART_SIZE="60,40,12,400,1844,3040,1384,1844,3040,1384,2048,1280,8,"
CONFIG_FLASH_PART_TYPE="none,none,none,none,kernel,bin,bin,kernel,bin,bin,smartfs,ftl,bootparam,"
CONFIG_FLASH_PART_NAME="bl1,reserved,ftl,ss,kernel,common,app1,kernel,common,app1,userfs,micom,bootparam,"
CONFIG_TRPK_CONTAINS_MULTIPLE_BINARY=y
CONFIG_FLASH_VSTART_LOADABLE=0xe000000
# CONFIG_ARCH_BOARD_HAVE_SECOND_FLASH is not set
CONFIG_AUTOMOUNT=y
CONFIG_AUTOMOUNT_USERFS=y
Expand All @@ -346,6 +348,7 @@ CONFIG_HW_ECDSA_VERIFICATION=y
# CONFIG_HW_RSA_ENC is not set
CONFIG_HW_SE_STORAGE=y
# CONFIG_HW_AES_ENC is not set
# CONFIG_HW_GCM_ENC is not set
CONFIG_SE_SECURE_CONTEXT_SIZE=9216
CONFIG_SECURITY_LEVEL=y

Expand Down Expand Up @@ -967,6 +970,7 @@ CONFIG_NET_LOOPBACK_INTERFACE=y
# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set
CONFIG_FS_READABLE=y
CONFIG_FS_WRITABLE=y
# CONFIG_RESOURCE_FS is not set
# CONFIG_FS_AIO is not set
# CONFIG_FS_NAMED_SEMAPHORES is not set
CONFIG_FS_MQUEUE_MPATH="/var/mqueue"
Expand Down Expand Up @@ -1293,8 +1297,6 @@ CONFIG_LIBCXX_HAVE_LIBSUPCXX=y
# CONFIG_ERROR_REPORT is not set
# CONFIG_GMOCK is not set
CONFIG_ENABLE_IOTIVITY=y
# CONFIG_EXTERNAL_CMSIS_DSP is not set
# CONFIG_EXTERNAL_CMSIS_NN is not set

#
# IOTIVITY Config Parameters
Expand Down Expand Up @@ -1325,6 +1327,8 @@ CONFIG_STRESS_TOOL=y
# CONFIG_OPENSSL_WRAPPER is not set
# CONFIG_STDK_IOT_CORE is not set
# CONFIG_EXTERNAL_TFMICRO is not set
# CONFIG_EXTERNAL_CMSIS_DSP is not set
# CONFIG_EXTERNAL_CMSIS_NN is not set

#
# Binary Loader
Expand All @@ -1333,6 +1337,7 @@ CONFIG_BINFMT_ENABLE=y
CONFIG_BINFMT_LOADABLE=y
# CONFIG_ELF is not set
CONFIG_XIP_ELF=y
# CONFIG_XIP_ELF_WARCHIVE is not set
CONFIG_BINFMT_CONSTRUCTORS=y
# CONFIG_SYMTAB_ORDEREDBYNAME is not set
CONFIG_SAVE_BIN_SECTION_ADDR=y
Expand All @@ -1353,11 +1358,8 @@ CONFIG_COMPRESSION_BLOCK_SIZE=16384
# Application entry point list
#
# CONFIG_ENTRY_MANUAL is not set
# CONFIG_ENTRY_CMSIS_DSP is not set
# CONFIG_ENTRY_CMSIS_NN is not set
CONFIG_ENTRY_HELLO=y
# CONFIG_ENTRY_HELLOXX is not set
# CONFIG_ENTRY_TESTCASE is not set
CONFIG_USER_ENTRYPOINT="hello_main"
CONFIG_BUILTIN_APPS=y

Expand All @@ -1373,8 +1375,6 @@ CONFIG_BUILTIN_APPS=y
#
# Board Specific Demos
#
# CONFIG_EXAMPLES_CMSIS_DSP is not set
# CONFIG_EXAMPLES_CMSIS_NN is not set
# CONFIG_EXAMPLES_AMEBA_MIPI is not set
# CONFIG_EXAMPLES_SSTORAGE is not set
# CONFIG_EXAMPLES_WIFICSI is not set
Expand Down Expand Up @@ -1452,6 +1452,7 @@ CONFIG_EXAMPLES_HELLOXX=y
# CONFIG_EXAMPLES_SMART is not set
# CONFIG_EXAMPLES_SMART_TEST is not set
# CONFIG_EXAMPLES_SMARTFS_POWERCUT is not set
# CONFIG_TESTING_SMP is not set
# CONFIG_EXAMPLES_ST_THINGS is not set
# CONFIG_EXAMPLES_TESTCASE is not set

Expand Down Expand Up @@ -1543,7 +1544,7 @@ CONFIG_APP1_INFO=y
CONFIG_APP1_BIN_NAME="app1"
CONFIG_APP1_BIN_TYPE="ELF"
CONFIG_APP1_BIN_VER=190412
CONFIG_APP1_BIN_DYN_RAMSIZE=1048576
CONFIG_APP1_BIN_DYN_RAMSIZE=5242880
CONFIG_APP1_BIN_LOADING_PRIORITY="LOW"
CONFIG_APP1_MAIN_STACKSIZE=8192
CONFIG_APP1_MAIN_PRIORITY=180
Expand Down
42 changes: 20 additions & 22 deletions build/configs/rtl8730e/loadable_ext/defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ CONFIG_HOST_LINUX=y
# CONFIG_HOST_OSX is not set
# CONFIG_HOST_WINDOWS is not set
# CONFIG_HOST_OTHER is not set
# CONFIG_WINDOWS_NATIVE is not set

#
# Build Configuration
Expand All @@ -27,6 +28,7 @@ CONFIG_NUM_APPS=1
CONFIG_SUPPORT_COMMON_BINARY=y
CONFIG_COMMON_BINARY_VERSION="200204"
CONFIG_COMMON_BINARY_NAME="common"
CONFIG_COMMON_BIN_STATIC_RAMSIZE=524288
CONFIG_NUM_L2_PER_APP=4
CONFIG_BUILD_PROTECTED=y
CONFIG_BUILD_2PASS=y
Expand Down Expand Up @@ -77,6 +79,7 @@ CONFIG_ARCH_CHIP_AMEBASMART=y
CONFIG_ARCH_CHIP="amebasmart"
CONFIG_ARM_THUMB=y
CONFIG_ARM_HAVE_DPFPU32=y
CONFIG_ARM_HAVE_WFE_SEV=y
CONFIG_ARM_HAVE_NEON=y
# CONFIG_ARM_FPU_ABI_SOFT is not set
CONFIG_ARM_DPFPU32=y
Expand Down Expand Up @@ -236,6 +239,7 @@ CONFIG_ARCH_IRQPRIO=y
# CONFIG_ARCH_TASKDUMP is not set
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_STACKDUMP_MAX_LENGTH=0
# CONFIG_DEBUG_DISPLAY_SYMBOL is not set
# CONFIG_ENDIAN_BIG is not set
# CONFIG_ARCH_IDLE_CUSTOM is not set
# CONFIG_ARCH_CUSTOM_PMINIT is not set
Expand Down Expand Up @@ -308,11 +312,13 @@ CONFIG_BOARDCTL_RESET=y
#
CONFIG_FLASH_START_ADDR=0x8000000
CONFIG_FLASH_SIZE=16777216
CONFIG_FLASH_STATUS_BITS=0x28
CONFIG_FLASH_VSTART=0x8000000
CONFIG_TRPK_CONTAINS_MULTIPLE_BINARY=y
CONFIG_FLASH_VSTART_LOADABLE=0xe000000
# CONFIG_BOARD_FLASH_8M is not set
CONFIG_BOARD_FLASH_16M=y
CONFIG_RTL8730E_BOARD_REVISION=5
CONFIG_FLASH_STATUS_BITS=0x28

#
# SPI Flash driver
Expand All @@ -332,10 +338,7 @@ CONFIG_FLASH_MINOR=0
CONFIG_FLASH_PART_SIZE="60,40,12,400,1844,5404,684,1844,5404,684,8,"
CONFIG_FLASH_PART_TYPE="none,none,none,none,kernel,bin,bin,kernel,bin,bin,bootparam,"
CONFIG_FLASH_PART_NAME="bl1,reserved,ftl,ss,kernel,common,app1,kernel,common,app1,bootparam,"
CONFIG_TRPK_CONTAINS_MULTIPLE_BINARY=y
CONFIG_FLASH_VSTART_LOADABLE=0xe000000
CONFIG_ARCH_BOARD_HAVE_SECOND_FLASH=y
CONFIG_EXTERNAL_FLASH_START_ADDR=0x9000000

#
# Second Flash Partition Options
Expand All @@ -347,6 +350,7 @@ CONFIG_SECOND_FLASH_PART_TYPE="none,resource,resource,smartfs,ftl,"
CONFIG_SECOND_FLASH_PART_NAME="ext_data,resource,resource,userfs,reserved,"
CONFIG_AUTOMOUNT=y
CONFIG_AUTOMOUNT_USERFS=y
# CONFIG_AUTOMOUNT_ROMFS is not set
# CONFIG_BOARD_USBDEV_SERIALSTR is not set

#
Expand All @@ -366,6 +370,7 @@ CONFIG_HW_ECDSA_VERIFICATION=y
# CONFIG_HW_RSA_ENC is not set
CONFIG_HW_SE_STORAGE=y
# CONFIG_HW_AES_ENC is not set
# CONFIG_HW_GCM_ENC is not set
CONFIG_SE_SECURE_CONTEXT_SIZE=9216
CONFIG_SECURITY_LEVEL=y

Expand Down Expand Up @@ -575,6 +580,7 @@ CONFIG_LCD_MAXPOWER=100
#
# CONFIG_LCD_ST7701 is not set
CONFIG_LCD_ST7701SN=y
# CONFIG_LCD_ST7785 is not set
# CONFIG_LCD_ST7789 is not set
CONFIG_LCD_XRES=480
CONFIG_LCD_YRES=800
Expand Down Expand Up @@ -1097,7 +1103,7 @@ CONFIG_HANDLER_STREAM_BUFFER_THRESHOLD=2048
CONFIG_FS_READABLE=y
CONFIG_FS_WRITABLE=y
CONFIG_RESOURCE_FS=y
CONFIG_RESOURCE_BINARY_VERSION=240421
CONFIG_RESOURCE_BINARY_VERSION="240421"
# CONFIG_FS_AIO is not set
# CONFIG_FS_NAMED_SEMAPHORES is not set
CONFIG_FS_MQUEUE_MPATH="/var/mqueue"
Expand Down Expand Up @@ -1178,16 +1184,8 @@ CONFIG_MTD_SMART_JOURNALING=y
# CONFIG_MTD_SMART_SECTOR_ERASE_DEBUG is not set
# CONFIG_MTD_SMART_ALLOC_DEBUG is not set
# CONFIG_MTD_W25 is not set
# CONFIG_W25_SPIMODE is not set
# CONFIG_W25_SPIFREQUENCY is not set
# CONFIG_W25_READONLY is not set
# CONFIG_W25_SECTOR512 is not set
# CONFIG_W25_SLOWREAD is not set
# CONFIG_W25_SECTOR_ERASE_4K is not set
# CONFIG_W25_SECTOR_ERASE_32K is not set
# CONFIG_W25_SECTOR_ERASE_64K is not set
CONFIG_MTD_JEDEC=y
CONFIG_JEDEC_SPIMODE=0
CONFIG_JEDEC_SPIMODE=0
CONFIG_JEDEC_SPI_FREQUENCY=48000000
# CONFIG_JEDEC_SLOWREAD is not set

Expand Down Expand Up @@ -1467,12 +1465,11 @@ CONFIG_DISABLE_NTLM=y
CONFIG_CA_PATH="/rom"
CONFIG_CA_BUNDLE="/rom/curl-certificates.crt"
# CONFIG_CA_FALLBACK is not set
# CONFIG_SSL_SUPPORT is not set
# CONFIG_CURL_DEBUG is not set
# CONFIG_ERROR_REPORT is not set
# CONFIG_GMOCK is not set
CONFIG_ENABLE_IOTIVITY=y
# CONFIG_EXTERNAL_CMSIS_DSP is not set
# CONFIG_EXTERNAL_CMSIS_NN is not set

#
# IOTIVITY Config Parameters
Expand Down Expand Up @@ -1503,6 +1500,8 @@ CONFIG_STRESS_TOOL=y
# CONFIG_OPENSSL_WRAPPER is not set
# CONFIG_STDK_IOT_CORE is not set
# CONFIG_EXTERNAL_TFMICRO is not set
# CONFIG_EXTERNAL_CMSIS_DSP is not set
# CONFIG_EXTERNAL_CMSIS_NN is not set

#
# Binary Loader
Expand All @@ -1511,6 +1510,7 @@ CONFIG_BINFMT_ENABLE=y
CONFIG_BINFMT_LOADABLE=y
# CONFIG_ELF is not set
CONFIG_XIP_ELF=y
# CONFIG_XIP_ELF_WARCHIVE is not set
CONFIG_BINFMT_CONSTRUCTORS=y
# CONFIG_SYMTAB_ORDEREDBYNAME is not set
CONFIG_SAVE_BIN_SECTION_ADDR=y
Expand All @@ -1531,11 +1531,8 @@ CONFIG_COMPRESSION_BLOCK_SIZE=16384
# Application entry point list
#
# CONFIG_ENTRY_MANUAL is not set
# CONFIG_ENTRY_CMSIS_DSP is not set
# CONFIG_ENTRY_CMSIS_NN is not set
CONFIG_ENTRY_HELLO=y
# CONFIG_ENTRY_HELLOXX is not set
# CONFIG_ENTRY_TESTCASE is not set
CONFIG_USER_ENTRYPOINT="hello_main"
CONFIG_BUILTIN_APPS=y

Expand All @@ -1551,8 +1548,6 @@ CONFIG_BUILTIN_APPS=y
#
# Board Specific Demos
#
# CONFIG_EXAMPLES_CMSIS_DSP is not set
# CONFIG_EXAMPLES_CMSIS_NN is not set
# CONFIG_EXAMPLES_AMEBA_MIPI is not set
# CONFIG_EXAMPLES_SSTORAGE is not set
# CONFIG_EXAMPLES_WIFICSI is not set
Expand Down Expand Up @@ -1582,6 +1577,7 @@ CONFIG_EXAMPLES_HELLOXX=y
# CONFIG_EXAMPLES_KERNEL_SAMPLE is not set
# CONFIG_EXAMPLES_KERNEL_UPDATE is not set
CONFIG_EXAMPLES_LCD=y
CONFIG_EXAMPLE_LCD_FPS_TEST=5000

#
# Libcoap
Expand Down Expand Up @@ -1632,6 +1628,7 @@ CONFIG_EXAMPLES_LCD=y
# CONFIG_EXAMPLES_SMART is not set
# CONFIG_EXAMPLES_SMART_TEST is not set
# CONFIG_EXAMPLES_SMARTFS_POWERCUT is not set
# CONFIG_TESTING_SMP is not set
# CONFIG_EXAMPLES_ST_THINGS is not set
# CONFIG_EXAMPLES_TESTCASE is not set

Expand Down Expand Up @@ -1725,7 +1722,7 @@ CONFIG_APP1_INFO=y
CONFIG_APP1_BIN_NAME="app1"
CONFIG_APP1_BIN_TYPE="ELF"
CONFIG_APP1_BIN_VER=190412
CONFIG_APP1_BIN_DYN_RAMSIZE=512000
CONFIG_APP1_BIN_DYN_RAMSIZE=5242880
CONFIG_APP1_BIN_LOADING_PRIORITY="LOW"
CONFIG_APP1_MAIN_STACKSIZE=8192
CONFIG_APP1_MAIN_PRIORITY=180
Expand Down Expand Up @@ -1780,6 +1777,7 @@ CONFIG_BINMGR_RELOAD_REBOOT=y
#
# Things Management
#
# CONFIG_ST_THINGS is not set

#
# IoTBus Framework
Expand Down
7 changes: 7 additions & 0 deletions os/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,13 @@ config COMMON_BINARY_NAME
---help---
Filename of the common binary file.

config COMMON_BIN_STATIC_RAMSIZE
int "Common Binary static RAM size for data and bss"
default 524288
depends on XIP_ELF
---help---
Common Binary static RAM size for data and bss

endif # SUPPORT_COMMON_BINARY

if ARCH_USE_MMU
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,18 +69,30 @@ extern unsigned int __PsramStackLimit;
# define ALL_PGTABLE_SIZE PGTABLE_SIZE
#endif

#ifdef CONFIG_APP_BINARY_SEPARATION
/* assign 3MB for each of the common, app1, app2. Incase if change is required, we also need to change the linker scripts for common and app */
#define APP1_RAM_SIZE (4 * 1024 * 1024 - ALL_PGTABLE_SIZE) /* align it to last 1mb of ram, easy to access and code ... */
#ifdef CONFIG_XIP_ELF

#ifndef CONFIG_COMMON_BIN_STATIC_RAMSIZE
#define CONFIG_COMMON_BIN_STATIC_RAMSIZE 0
#endif

#ifndef CONFIG_APP1_BIN_DYN_RAMSIZE
#define CONFIG_APP1_BIN_DYN_RAMSIZE 0
#endif

#ifndef CONFIG_APP2_BIN_DYN_RAMSIZE
#define CONFIG_APP2_BIN_DYN_RAMSIZE 0
#endif

#define APP_RAM_SIZE (CONFIG_APP1_BIN_DYN_RAMSIZE + CONFIG_APP2_BIN_DYN_RAMSIZE + CONFIG_COMMON_BIN_STATIC_RAMSIZE - ALL_PGTABLE_SIZE)
#else
#define APP1_RAM_SIZE 0
#define APP_RAM_SIZE 0
#endif

// const uintptr_t g_idle_topstack = IDLE_STACK;

void os_heap_init(void){
kregionx_start[0] = (void *)PSRAM_HEAP_BASE;
kregionx_size[0] = (size_t)(PSRAM_HEAP_LIMIT - PSRAM_HEAP_BASE - ALL_PGTABLE_SIZE - APP1_RAM_SIZE);
kregionx_size[0] = (size_t)(PSRAM_HEAP_LIMIT - PSRAM_HEAP_BASE - ALL_PGTABLE_SIZE - APP_RAM_SIZE);
#if CONFIG_KMM_REGIONS >= 2
#if CONFIG_KMM_REGIONS == 3
kregionx_start[1] = (void *)PSRAM_HEAP_BASE;
Expand Down
Loading

0 comments on commit 65e2da9

Please sign in to comment.