Go to file
wangchen b244ad4ad0 feat: 解决fclose等函数工具链重定义问题
【背景】当前部分单板编译fclose等函数时与对应的gcc工具链重定义。

【修改方案】
1. fclose等函数新增weak定义,并恢复与musl源码一致。
2.外层添加wrap函数,用于配合gcc的--wrap选项。

【影响】
对现有的产品编译不会有影响,报重定义的工程需单独在自己的build.gn中添加
--wrap=xxx。

re #I3UG6O

Signed-off-by: wangchen <253227059@qq.com>
2021-06-05 11:30:16 +08:00
.gitee add issue and pr template 2021-04-07 14:49:54 +08:00
components !160 fix: fatfs中宏FS_LOCK_TIMEMOUT_SEC拼写错误 2021-06-04 14:47:51 +08:00
figures update openharmony 1.0.1 2021-03-11 20:30:40 +08:00
kal feat: 解决fclose等函数工具链重定义问题 2021-06-05 11:30:16 +08:00
kernel !156 fix: correct the counter of exception type 2021-06-04 14:44:41 +08:00
targets fix: remove project files 2021-06-04 09:43:39 +08:00
testsuits fix: fix length typo 2021-05-18 11:23:43 +08:00
utils fix: fix NULL UNUSED redefined issue 2021-06-04 10:58:43 +08:00
.gitignore update openharmony 1.0.1 2021-03-11 20:30:40 +08:00
BUILD.gn fix: 修复不规范的copyright 2021-06-02 11:07:59 +08:00
LICENSE update openharmony 1.0.1 2021-03-11 20:30:40 +08:00
NOTICE update openharmony 1.0.1 2021-03-11 20:30:40 +08:00
README.md change according to review comments 2021-05-25 10:08:42 +08:00
README_zh.md !147 fix: fix readme link issue 2021-06-02 17:10:22 +08:00
arch_spec.md change according to comments 2021-05-25 10:12:19 +08:00
arch_spec_zh.md change according to review comments 2021-05-25 10:08:42 +08:00

README.md

LiteOS Cortex-M

Introduction

The OpenHarmony LiteOS Cortex-M is the kernel designed for the lightweight operating system OS for the Internet of Things IoT field. It features small size, low power consumption, and high performance. In addition, it has a simple code structure, including the minimum kernel function set, kernel abstraction layer, optional components, and project directory, and is divided into the hardware-related and hardware-irrelevant layers. The hardware-related layers provide unified hardware abstraction layer HAL interfaces to improve hardware adaptability. The combination and classification of different compilation toolchains and chip architectures meet the requirements of the Artificial Intelligence of Things AIoT field for rich hardware and compilation toolchains. Figure1 shows the architecture of the OpenHarmony LiteOS Cortex-M kernel.

Figure 1 Architecture of OpenHarmony the LiteOS Cortex-M kernel

Directory Structure

The directory structure is listed as below, for the detailed directories, please refer to arch_spec.md.

/kernel/liteos_m
├── components           # Optional components
│   ├── backtrace        # Backtrace support
│   ├── cppsupport       # C++ support
│   ├── cpup             # CPU possession (CPUP)
│   ├── exchook          # Exception hook
│   ├── fs               # File system
│   └── net              # Network support
├── kal                  # Kernel abstraction layer
│   ├── cmsis            # CMSIS-compliant API support
│   └── posix            # POSIX API support
├── kernel               # Minimum function set support
│   ├── arch             # Code of the kernel instruction architecture layer
│   │   ├── arm          # Code of the ARM32 architecture
│   │   └── include      # APIs exposed externally
│   ├── include          # APIs exposed externally
│   └── src              # Source code of the minimum function set of the kernel
├── targets              # Board-level projects
├── utils                # Common code

Constraints

Programming languages: C and C++

Currently applicable architectures: Cortex-M3, Cortex-M4, Cortex-M7, and RISC-V

Usage

LiteOS Cortex-M provides projects for three chip architectures, which are located in the targets directory. The methods of compiling and using these projects are as follows:

  • Cortex-M3:

The kernel/liteos_m/targets/cortex-m3_stm32f103_simulator_keil directory is the Keil project directory created based on the STM32F103 chip architecture. You can download and install Keil development tools from the Internet. To compile the Cortex-M3 project, go to the cortex-m3_stm32f103_simulator_keil/project directory and double-click the los_demo.uvproj file to open the desired project. After the compilation is successful, burn the file to the corresponding board using JLINK or STM32 ST-LINK Utility.

  • Cortex-M4:

The kernel/liteos_m/targets/cortex-m4_stm32f429ig_fire-challenger_iar directory is the IAR project directory created based on the STM32F429IG chip architecture. You can download and install IAR development tools from the Internet. To compile the Cortex-M4 project, go to the cortex-m4_stm32f429ig_fire-challenger_iar/project directory and double-click the los_demo.eww file to open the desired project. After the compilation is successful, burn the file to the corresponding board using JLINK or STM32 ST-LINK Utility.

  • Cortex-M7:

The kernel/liteos_m/targets/cortex-m7_nucleo_f767zi_gcc directory is the Makefile project directory created based on the STM32F767ZI chip architecture. The compilation commands are as follows:

cd kernel/liteos_m/targets/cortex-m7_nucleo_f767zi_gcc
make clean; make

After the compilation is successful, the executable file NUCLEO-F767.hex is generated in the cortex-m7_nucleo_f767zi_gcc/build directory. Burn the file to the corresponding board using STM32 ST-LINK Utility.

Change Log

v1.0.1

  1. removed these KAL apis: KalThreadGetInfo,KalDelayUs,KalTimerCreate,KalTimerStart,KalTimerChange,KalTimerStop,KalTimerDelete,KalTimerIsRunning,KalTickToMs,KalMsToTick,KalGetMemInfo
  2. add some POSIX apis

v1.0

  1. first release

Repositories Involved

Kernel subsystem

kernel_liteos_m