diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 2127fc3b..18855cee 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,4 +1,4 @@ -*Note: Please adhere to [Contributing Guidelines](https://github.com/open-vela/docs/blob/trunk/CONTRIBUTING.md).* +*Note: Please adhere to [Contributing Guidelines](https://github.com/open-vela/docs/blob/trunk-5.4/CONTRIBUTING.md).* ## Summary diff --git a/README.md b/README.md index 6441c0fe..57c9e80a 100644 --- a/README.md +++ b/README.md @@ -101,17 +101,17 @@ Here are some typical native application examples demonstrating the usage of dif - [Music Player](./en/demo/Music_Player_Example.md): Demonstrates audio playback, playlist management, and background services. - [Smart Band](./en/demo/Smart_Band_Example.md): Demonstrates sleep monitoring, heart rate monitoring, music playback, and a stopwatch. - [Cycling Computer](./en/demo/X_Track.md): Demonstrates GPS positioning, real-time data display, and route tracking. -- [Calculator](../../../../open-vela/packages_demos/blob/trunk/calculator/Readme.md): A basic example of UI and logic interaction. -- [Relation Calculator](../../../../open-vela/packages_demos/blob/trunk/relation_calculator/Readme.md): Demonstrates complex conditional logic and algorithm implementation. -- [Whack-a-Mole](../../../../open-vela/packages_demos/blob/trunk/Whackmole/README.md): Demonstrates a game loop, random number generation, and animation effects. +- [Calculator](../../../../open-vela/packages_demos/blob/trunk-5.4/calculator/Readme.md): A basic example of UI and logic interaction. +- [Relation Calculator](../../../../open-vela/packages_demos/blob/trunk-5.4/relation_calculator/Readme.md): Demonstrates complex conditional logic and algorithm implementation. +- [Whack-a-Mole](../../../../open-vela/packages_demos/blob/trunk-5.4/Whackmole/README.md): Demonstrates a game loop, random number generation, and animation effects. -To see the full list of native apps, please visit the [Native App Examples Repository](../../../packages_demos/blob/trunk/README.md). +To see the full list of native apps, please visit the [Native App Examples Repository](../../../packages_demos/blob/trunk-5.4/README.md). ### Quick Apps -- [Mi Band Weather App](../../.././packages_fe_examples/blob/trunk/weather/README.md): Presents a clean and intuitive seven-day weather forecast. -- [Music Player](../../.././packages_fe_examples/blob/trunk/player/README.md): Demonstrates a basic music player, including playback, volume control, and playlist viewing. -- [Calendar](../../.././packages_fe_examples/blob/trunk/calendar/README.md): Demonstrates a basic calendar. +- [Mi Band Weather App](../../.././packages_fe_examples/blob/trunk-5.4/weather/README.md): Presents a clean and intuitive seven-day weather forecast. +- [Music Player](../../.././packages_fe_examples/blob/trunk-5.4/player/README.md): Demonstrates a basic music player, including playback, volume control, and playlist viewing. +- [Calendar](../../.././packages_fe_examples/blob/trunk-5.4/calendar/README.md): Demonstrates a basic calendar. More Quick App examples are continuously being added. To see all examples, please visit the [Quick App Examples Repository](../../../packages_fe_examples). diff --git a/README_zh-cn.md b/README_zh-cn.md index d17c5824..9b064a7a 100644 --- a/README_zh-cn.md +++ b/README_zh-cn.md @@ -102,17 +102,17 @@ Vela 的命名源自拉丁语中船帆的含义,也是南方星空中船帆星 - [音乐播放器](./zh-cn/demo/Music_Player_Example_zh-cn.md):演示音频播放、列表管理和后台服务。 - [智能手环](./zh-cn/demo/Smart_Band_Example_zh-cn.md):演示睡眠监测、心率监测、音乐播放、秒表计时。 - [自行车码表](./zh-cn/demo/X_Track_zh-cn.md):演示 GPS 定位、实时数据显示和运动轨迹记录。 -- [计算器](../../../../open-vela/packages_demos/blob/trunk/calculator/Readme.md):一个基础的 UI 与逻辑交互示例。 -- [亲戚计算器](../../../../open-vela/packages_demos/blob/trunk/relation_calculator/Readme_zh-cn.md):演示复杂的条件逻辑与算法实现。 -- [打地鼠](../../../../open-vela/packages_demos/blob/trunk/Whackmole/README_zh-cn.md):演示游戏循环、随机数生成和动画效果。 +- [计算器](../../../../open-vela/packages_demos/blob/trunk-5.4/calculator/Readme.md):一个基础的 UI 与逻辑交互示例。 +- [亲戚计算器](../../../../open-vela/packages_demos/blob/trunk-5.4/relation_calculator/Readme_zh-cn.md):演示复杂的条件逻辑与算法实现。 +- [打地鼠](../../../../open-vela/packages_demos/blob/trunk-5.4/Whackmole/README_zh-cn.md):演示游戏循环、随机数生成和动画效果。 -查看完整的原生应用列表,请访问[原生应用示例仓库](../../../packages_demos/blob/trunk/README_zh-cn.md)。 +查看完整的原生应用列表,请访问[原生应用示例仓库](../../../packages_demos/blob/trunk-5.4/README_zh-cn.md)。 ### 快应用(Quick Apps) -- [小米手环天气预报应用](../../.././packages_fe_examples/blob/trunk/weather/README.md):提供简洁直观的未来七日天气信息展示。 -- [音乐播放器](../../.././packages_fe_examples/blob/trunk/player/README.md):演示一个基础的音乐播放器,包含音乐的播放,音量调节,歌单查看。 -- [日历](../../.././packages_fe_examples/blob/trunk/calendar/README.md):演示一个基础的日历。 +- [小米手环天气预报应用](../../.././packages_fe_examples/blob/trunk-5.4/weather/README.md):提供简洁直观的未来七日天气信息展示。 +- [音乐播放器](../../.././packages_fe_examples/blob/trunk-5.4/player/README.md):演示一个基础的音乐播放器,包含音乐的播放,音量调节,歌单查看。 +- [日历](../../.././packages_fe_examples/blob/trunk-5.4/calendar/README.md):演示一个基础的日历。 快应用相关示例正在持续丰富中。查看所有示例,请访问[快应用示例仓库](../../../packages_fe_examples)。 diff --git a/en/app_dev/system_apps/Dev_UI_App.md b/en/app_dev/system_apps/Dev_UI_App.md index afb7076c..92f8e023 100644 --- a/en/app_dev/system_apps/Dev_UI_App.md +++ b/en/app_dev/system_apps/Dev_UI_App.md @@ -5,7 +5,7 @@ ## I. Prerequisites 1. Download the source code. Please refer to [Quick Start](./../../quickstart/openvela_ubuntu_quick_start.md). -2. Before starting this tutorial, please obtain the example code from [music_player](../../../../../../packages_demos/tree/trunk/music_player). +2. Before starting this tutorial, please obtain the example code from [music_player](../../../../../../packages_demos/tree/trunk-5.4/music_player). ## II. Preliminary Concepts diff --git a/en/chip_porting/Interrupt_System_Adaptation_Guide.md b/en/chip_porting/Interrupt_System_Adaptation_Guide.md index 7ce20594..44909247 100644 --- a/en/chip_porting/Interrupt_System_Adaptation_Guide.md +++ b/en/chip_porting/Interrupt_System_Adaptation_Guide.md @@ -125,7 +125,7 @@ The following are the interrupt-related functions that vendors need to implement ### 2. Required Interrupt-Related Macros -Alongside the above function implementations, vendors need to define a series of interrupt-related macros, which describe the configuration of the NVIC (Nested Vectored Interrupt Controller). These macros should be defined in the `chips/chip_name/include/irq.h` file. Refer to the [RTL8720C example](../../../../../nuttx/blob/trunk/arch/arm/src/rtl8720c/include/irq.h) for guidance. +Alongside the above function implementations, vendors need to define a series of interrupt-related macros, which describe the configuration of the NVIC (Nested Vectored Interrupt Controller). These macros should be defined in the `chips/chip_name/include/irq.h` file. Refer to the [RTL8720C example](../../../../../nuttx/blob/trunk-5.4/arch/arm/src/rtl8720c/include/irq.h) for guidance. The required macros and their descriptions are as follows: diff --git a/en/debugging_tools/offline_debugging/backtrace.md b/en/debugging_tools/offline_debugging/backtrace.md index ad57a012..1a3b71b3 100644 --- a/en/debugging_tools/offline_debugging/backtrace.md +++ b/en/debugging_tools/offline_debugging/backtrace.md @@ -96,7 +96,7 @@ CONFIG_FRAME_POINTER=y CONFIG_SCHED_BACKTRACE=y ``` - For more information, refer to: [RISC-V Backtrace Implementation](../../../../../../nuttx/blob/trunk/arch/risc-v/src/common/riscv_backtrace.c). + For more information, refer to: [RISC-V Backtrace Implementation](../../../../../../nuttx/blob/trunk-5.4/arch/risc-v/src/common/riscv_backtrace.c). ### 4. Xtensa diff --git a/en/dev_board/Development_Board.md b/en/dev_board/Development_Board.md index c849d62c..808fb1c4 100644 --- a/en/dev_board/Development_Board.md +++ b/en/dev_board/Development_Board.md @@ -8,6 +8,6 @@ | STMicroelectronics | STM32F411CEU6 | [STM32F411CE](https://www.st.com/en/microcontrollers-microprocessors/stm32f411ce.html) | [Blink an LED with openvela on STM32F411](../quickstart/development_board/STM32F411.md) | IoT, Industrial Automation | [ST MCU China Support](mailto:mcu.china@st.com) | | Espressif | [ESP32-S3-EYE](https://www.espressif.com/en/dev-board/esp32-s3-eye) | [ESP32-S3](https://www.espressif.com/en/products/socs/esp32-s3) | [Port openvela to the ESP32-S3-EYE Dev Board](../quickstart/development_board/ESP32-S3-EYE.md) | AIoT, HMI, Smart Home | [Espressif Developer Community](https://www.espressif.com/en/contact-us/technical-inquiries) | | Espressif | [ESP32-S3-BOX](https://www.espressif.com/en/news/ESP32-S3-BOX_video) | [ESP32-S3](https://www.espressif.com/en/products/socs/esp32-s3) | [See: Port openvela to the ESP32-S3-EYE Dev Board](../quickstart/development_board/ESP32-S3-EYE.md) | AIoT, HMI, Smart Home | [Espressif Developer Community](https://www.espressif.com/en/contact-us/technical-inquiries) | -| Bestechnic | [BES2600WM MAIN BOARD V1.1](https://www.fortune-co.com/index.php?s=/Cn/Public/singlePage/catid/176.html) | BES2600WM-AX4F | [Readme](../../../../../vendor_bes/blob/trunk/boards/best2003_ep/aos_evb/Readme) | Smart Wearables, AI Toys | [Contact Distributor](https://www.fortune-co.com/Tech/projectDetail/id/64.html) | +| Bestechnic | [BES2600WM MAIN BOARD V1.1](https://www.fortune-co.com/index.php?s=/Cn/Public/singlePage/catid/176.html) | BES2600WM-AX4F | [Readme](../../../../../vendor_bes/blob/trunk-5.4/boards/best2003_ep/aos_evb/Readme) | Smart Wearables, AI Toys | [Contact Distributor](https://www.fortune-co.com/Tech/projectDetail/id/64.html) | | Flagchip | [FC7300F8M-EVB](https://www.flagchip.com.cn/Pro/3/3.html) | [FC7300F8MDT](https://www.flagchip.com.cn/Pro/3/3.html) | [openvela Running Guide for FC7300F8M-EVB](../quickstart/development_board/fc7300f8m_evb_guide.md) | Domain/Zonal Controllers, ADAS, BMS, Motor Control, etc. | [Contact Distributor](https://www.flagchip.com.cn/Pro/3/3.html) | [Contact Distributor](https://www.flagchip.com.cn/Pro/3/3.html) | | Infineon | [TC4D9-EVB](https://itools.infineon.com/aurix_tc4xx_code_examples/documents/Board_Users_Manual_TriBoard-TC4X9-COM-V2_0_0.pdf) | [AURIX ™ TC4x](https://www.infineon.cn/products/microcontroller/32-bit-tricore/aurix-tc4x/tc4dx#products) | [openvela Running Guide for TC4D9-EVB](../quickstart/development_board/tc4d9_evb_guide.md) | Vehicle Motion Controllers, Zonal Controllers, Automotive Gateways, etc. | [Contact Distributor](https://www.infineon.cn/contact-us/where-to-buy) | [Contact Distributor](https://www.infineon.cn/contact-us/where-to-buy) | \ No newline at end of file diff --git a/en/device_dev_guide/connection/bluetooth/how_to_add_a_bluetooth_driver.md b/en/device_dev_guide/connection/bluetooth/how_to_add_a_bluetooth_driver.md index 77f05562..05c320a5 100644 --- a/en/device_dev_guide/connection/bluetooth/how_to_add_a_bluetooth_driver.md +++ b/en/device_dev_guide/connection/bluetooth/how_to_add_a_bluetooth_driver.md @@ -19,20 +19,20 @@ The implementation of these member functions depends on the actual operation of #### Note -- To quickly validate custom callbacks and driver registration in a QEMU environment, this example implements the `struct bt_driver_s` member functions directly within the [drivers_initialize](../../../../../../../nuttx/blob/trunk/drivers/drivers_initialize.c) function and completes driver registration. -- In a real integration or production scenario, it is recommended to create a separate source file under the [vendor](../../../../../../../vendor_template/blob/trunk/boards/chip_name/board_name/src) directory for maintainability and version control. +- To quickly validate custom callbacks and driver registration in a QEMU environment, this example implements the `struct bt_driver_s` member functions directly within the [drivers_initialize](../../../../../../../nuttx/blob/trunk-5.4/drivers/drivers_initialize.c) function and completes driver registration. +- In a real integration or production scenario, it is recommended to create a separate source file under the [vendor](../../../../../../../vendor_template/blob/trunk-5.4/boards/chip_name/board_name/src) directory for maintainability and version control. #### Steps -1. In [drivers_initialize.c](../../../../../../../nuttx/blob/trunk/drivers/drivers_initialize.c), add the [bt_driver.h](../../../../../../../nuttx/blob/trunk/include/nuttx/wireless/bluetooth/bt_driver.h) header include: +1. In [drivers_initialize.c](../../../../../../../nuttx/blob/trunk-5.4/drivers/drivers_initialize.c), add the [bt_driver.h](../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/wireless/bluetooth/bt_driver.h) header include: ```C #include /* Add bt_driver.h header include */ ``` -2. In [drivers_initialize.c](../../../../../../../nuttx/blob/trunk/drivers/drivers_initialize.c), implement the member functions. +2. In [drivers_initialize.c](../../../../../../../nuttx/blob/trunk-5.4/drivers/drivers_initialize.c), implement the member functions. - In openvela, the `receive` member function of `struct bt_driver_s` already has a default implementation in [uart_bth4.c](../../../../../../../nuttx/blob/trunk/drivers/serial/uart_bth4.c). Therefore, developers or vendors do not need to redefine or implement this method. + In openvela, the `receive` member function of `struct bt_driver_s` already has a default implementation in [uart_bth4.c](../../../../../../../nuttx/blob/trunk-5.4/drivers/serial/uart_bth4.c). Therefore, developers or vendors do not need to redefine or implement this method. ```C /* The following are sample implementations for demonstration only. @@ -68,7 +68,7 @@ The implementation of these member functions depends on the actual operation of /* 4. The receive member function is assigned by openvela at registration time */ ``` -3. In [drivers_initialize.c](../../../../../../../nuttx/blob/trunk/drivers/drivers_initialize.c), define the `struct bt_driver_s` structure. +3. In [drivers_initialize.c](../../../../../../../nuttx/blob/trunk-5.4/drivers/drivers_initialize.c), define the `struct bt_driver_s` structure. The following code shows a complete example of initializing a `struct bt_driver_s` instance, where the function pointers are assigned to the sample functions defined above: @@ -94,7 +94,7 @@ After implementing the above structure, register the driver instance using one o - `bt_driver_register_with_id(FAR struct bt_driver_s *driver, int id)`: Registers with the specified id -The type definition `int bt_driver_register(FAR struct bt_driver_s *drv)` can be found in the header [bt_driver.h](../../../../../../../nuttx/blob/trunk/include/nuttx/wireless/bluetooth/bt_driver.h). Vendors or developers do not need to define the `receive()` member function; the BTH4 driver will initialize it. +The type definition `int bt_driver_register(FAR struct bt_driver_s *drv)` can be found in the header [bt_driver.h](../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/wireless/bluetooth/bt_driver.h). Vendors or developers do not need to define the `receive()` member function; the BTH4 driver will initialize it. The call flow is shown below: @@ -102,7 +102,7 @@ The call flow is shown below: ### Example -After completing the driver implementation example above, call the driver registration API at the end of the `drivers_initialize()` function in [drivers_initialize.c](../../../../../../../nuttx/blob/trunk/drivers/drivers_initialize.c) to complete the driver registration: +After completing the driver implementation example above, call the driver registration API at the end of the `drivers_initialize()` function in [drivers_initialize.c](../../../../../../../nuttx/blob/trunk-5.4/drivers/drivers_initialize.c) to complete the driver registration: ```C void drivers_initialize(void) diff --git a/en/device_dev_guide/driver/driver_development.md b/en/device_dev_guide/driver/driver_development.md index 8f44aacc..0b2f95ff 100644 --- a/en/device_dev_guide/driver/driver_development.md +++ b/en/device_dev_guide/driver/driver_development.md @@ -85,7 +85,7 @@ In openvela, the application layer accesses drivers through system calls, with t **System call -> VFS (Virtual File System) -> Driver**. -To understand how drivers are registered with the file system, it is necessary to first understand the relevant data structures. The definitions of these data structures are located in the [include/nuttx/fs/fs.h](../../../../../../nuttx/blob/trunk/include/nuttx/fs/fs.h) file. +To understand how drivers are registered with the file system, it is necessary to first understand the relevant data structures. The definitions of these data structures are located in the [include/nuttx/fs/fs.h](../../../../../../nuttx/blob/trunk-5.4/include/nuttx/fs/fs.h) file. #### Driver Registration and `inode` diff --git a/en/device_dev_guide/driver/timer_driver/timer/Arch_Alarm.md b/en/device_dev_guide/driver/timer_driver/timer/Arch_Alarm.md index 5b0f43e5..424b01a1 100644 --- a/en/device_dev_guide/driver/timer_driver/timer/Arch_Alarm.md +++ b/en/device_dev_guide/driver/timer_driver/timer/Arch_Alarm.md @@ -18,7 +18,7 @@ Openvela provides a generic **oneshot** driver, which is a one-time (non-periodi - **Upper Half**: Application-facing, provided by openvela, and does not require modification by chip vendors. - **Lower Half**: Platform-specific hardware control driver, which chip vendors need to adapt and provide. -The **oneshot** driver-related interface information is in the [oneshot.h](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/oneshot.h) file, and is also divided into **Upper Half** and **Lower Half** interface layers. +The **oneshot** driver-related interface information is in the [oneshot.h](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/oneshot.h) file, and is also divided into **Upper Half** and **Lower Half** interface layers. ### 2. Arch_alarm Timer Introduction @@ -47,7 +47,7 @@ The **`up_timer_initialize`** function in the Upper Half of openvela must be imp ## III. Arch_alarm API -`arch_alarm` provides a series of interfaces to meet the timer requirements of the sched module. Interface information can be found in the [arch.h](../../../../../../../../nuttx/blob/trunk/include/nuttx/arch.h) header file. +`arch_alarm` provides a series of interfaces to meet the timer requirements of the sched module. Interface information can be found in the [arch.h](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/arch.h) header file. ### 1. Interface Classification @@ -193,7 +193,7 @@ In the openvela board adaptation, the initialization of the Oneshot timer requir ##### Instance Creation: Call `oneshot_initialize` -During the board initialization phase, it is necessary to invoke the **vendor-customized initialization function** to complete the allocation and initialization of the [struct oneshot_lowerhalf_s](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/oneshot.h#L226) structure. This function is provided by the openvela framework, with the prototype as follows: +During the board initialization phase, it is necessary to invoke the **vendor-customized initialization function** to complete the allocation and initialization of the [struct oneshot_lowerhalf_s](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/oneshot.h#L226) structure. This function is provided by the openvela framework, with the prototype as follows: ```C /**************************************************************************** @@ -224,7 +224,7 @@ Operation Instructions: ##### Device Registration: Call `oneshot_register` -Bind the instance returned by `oneshot_initialize` to the system device model, register the character device node (e.g., `/dev/oneshot`), and associate it with the file operation interface `struct file_operations g_oneshot_ops`. The prototype of the function [oneshot_register](../../../../../../../../nuttx/blob/trunk/drivers/timers/oneshot.c#L291) is as follows: +Bind the instance returned by `oneshot_initialize` to the system device model, register the character device node (e.g., `/dev/oneshot`), and associate it with the file operation interface `struct file_operations g_oneshot_ops`. The prototype of the function [oneshot_register](../../../../../../../../nuttx/blob/trunk-5.4/drivers/timers/oneshot.c#L291) is as follows: ```C /**************************************************************************** @@ -272,7 +272,7 @@ Key Role: #### 2.2 Reference Implementation and Debugging -- Structure Definition: For details on the members of `struct oneshot_lowerhalf_s`, refer to [oneshot.h](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/oneshot.h#L226). Fill in function pointers such as interrupt triggering and timer startup according to hardware characteristics. +- Structure Definition: For details on the members of `struct oneshot_lowerhalf_s`, refer to [oneshot.h](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/oneshot.h#L226). Fill in function pointers such as interrupt triggering and timer startup according to hardware characteristics. - Example Code: For specific driver adaptation examples, refer to the [Driver Adaptation Example - Initialization Section](#1-initialization-process), and adjust the hardware register operation logic according to the target platform (e.g., ARM Cortex-M/RISC-V). - Debugging Suggestions: If initialization fails, check whether `CONFIG_ONESHOT`/`CONFIG_ALARM_ARCH` are correctly enabled, and use serial port logs to print the return value of `oneshot_initialize`. @@ -296,7 +296,7 @@ Design Principles: #### 3.2 Core Interface Description -Upper-Half interfaces are defined in [arch.h](../../../../../../../../nuttx/blob/trunk/include/nuttx/arch.h#L1460), primarily for use by the scheduler (Sched). +Upper-Half interfaces are defined in [arch.h](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/arch.h#L1460), primarily for use by the scheduler (Sched). ### 4. Lower-Half Interfaces @@ -323,7 +323,7 @@ This interface supports two time units (`struct timespec` and `tick`). Developer - Vendor Selection - Choose to implement the `timespec` or `tick` interface group based on hardware capabilities. - - Unimplemented interface groups can be automatically mapped via openvela's built-in [conversion functions](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/oneshot.h). + - Unimplemented interface groups can be automatically mapped via openvela's built-in [conversion functions](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/oneshot.h). - Performance Optimization @@ -331,7 +331,7 @@ This interface supports two time units (`struct timespec` and `tick`). Developer #### 4.2 Core Interface Description -`struct oneshot_operations_s` is defined in [oneshot.h](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/oneshot.h), with the following member functions. +`struct oneshot_operations_s` is defined in [oneshot.h](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/oneshot.h), with the following member functions. ##### Timer Control Interfaces @@ -432,7 +432,7 @@ board_late_initialize (or board_app_initialize) #### 1.2 Key Code Implementation -- Hardware (Arch Layer) Timer Initialization, refer to code [arch/risc-v/src/bl602/bl602_timerisr.c](../../../../../../../../nuttx/blob/trunk/arch/risc-v/src/bl602/bl602_timerisr.c#L57). +- Hardware (Arch Layer) Timer Initialization, refer to code [arch/risc-v/src/bl602/bl602_timerisr.c](../../../../../../../../nuttx/blob/trunk-5.4/arch/risc-v/src/bl602/bl602_timerisr.c#L57). ```C /**************************************************************************** @@ -456,7 +456,7 @@ board_late_initialize (or board_app_initialize) } ``` -- Oneshot Driver Instantiation, refer to code [arch/risc-v/src/bl602/bl602_oneshot_lowerhalf.c](../../../../../../../../nuttx/blob/trunk/arch/risc-v/src/bl602/bl602_oneshot_lowerhalf.c#L361). +- Oneshot Driver Instantiation, refer to code [arch/risc-v/src/bl602/bl602_oneshot_lowerhalf.c](../../../../../../../../nuttx/blob/trunk-5.4/arch/risc-v/src/bl602/bl602_oneshot_lowerhalf.c#L361). ```C struct oneshot_lowerhalf_s *oneshot_initialize(int chan, @@ -520,7 +520,7 @@ board_late_initialize (or board_app_initialize) ### 2. Lower-Half Interface Implementation -The operation interface binding is as follows, and the detailed code can be referred to in [arch/risc-v/src/bl602/bl602_oneshot_lowerhalf.c](../../../../../../../../nuttx/blob/trunk/arch/risc-v/src/bl602/bl602_oneshot_lowerhalf.c#L96). +The operation interface binding is as follows, and the detailed code can be referred to in [arch/risc-v/src/bl602/bl602_oneshot_lowerhalf.c](../../../../../../../../nuttx/blob/trunk-5.4/arch/risc-v/src/bl602/bl602_oneshot_lowerhalf.c#L96). ```C /* "Lower half" driver methods */ @@ -545,7 +545,7 @@ Below is a brief introduction to the timer API. For detailed information, refer man timer_create ``` -Detailed code can be found in [include/time.h](../../../../../../../../nuttx/blob/trunk/include/time.h#L233). +Detailed code can be found in [include/time.h](../../../../../../../../nuttx/blob/trunk-5.4/include/time.h#L233). ```C /* @@ -600,7 +600,7 @@ int timer_getoverrun(timer_t timerid); ### 2. IOCTL API -Applications can directly operate the Oneshot timer through the `ioctl` function. Before using this feature, the `/dev/oneshot` device node must be registered during the system startup (bringup) process. Refer to the header file [include/nuttx/timers/oneshot.h](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/oneshot.h#L41) for the currently supported `ioctl` commands. Command descriptions are as follows: +Applications can directly operate the Oneshot timer through the `ioctl` function. Before using this feature, the `/dev/oneshot` device node must be registered during the system startup (bringup) process. Refer to the header file [include/nuttx/timers/oneshot.h](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/oneshot.h#L41) for the currently supported `ioctl` commands. Command descriptions are as follows: - `OSIOC_START` diff --git a/en/device_dev_guide/driver/timer_driver/timer/Arch_Timer.md b/en/device_dev_guide/driver/timer_driver/timer/Arch_Timer.md index 8b7dbb61..50693303 100644 --- a/en/device_dev_guide/driver/timer_driver/timer/Arch_Timer.md +++ b/en/device_dev_guide/driver/timer_driver/timer/Arch_Timer.md @@ -164,15 +164,15 @@ grep -rE "CONFIG_TIMER|CONFIG_TIMER_ARCH|CONFIG_ARCH_HAVE_TICKLESS|CONFIG_ARCH_H During **board** initialization, the `***_timer_initialize` function implemented by the specific **Vendor** needs to be called to complete initialization. This function will perform the following operations: -1. Allocate and initialize an instance of [struct timer_lowerhalf_s](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/timer.h). -2. Register the `timer_lowerhalf_s` instance as a Timer driver using the [timer_register](../../../../../../../../nuttx/blob/trunk/drivers/timers/timer.c) function. +1. Allocate and initialize an instance of [struct timer_lowerhalf_s](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/timer.h). +2. Register the `timer_lowerhalf_s` instance as a Timer driver using the [timer_register](../../../../../../../../nuttx/blob/trunk-5.4/drivers/timers/timer.c) function. - The registration process generates the `/dev/timer` device node. - Simultaneously binds the `struct file_operations` and `g_timerops` instances to the `timer_lowerhalf_s` instance. In the platform code, the `up_timer_initialize` function needs to be implemented to call the `up_timer_set_lowerhalf` function, binding the instance returned by `***_timer_initialize` to the system as the system timer. -Related interface definitions are in: [/include/nuttx/timers/timer.h](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/timer.h). +Related interface definitions are in: [/include/nuttx/timers/timer.h](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/timer.h). #### `timer_register` Function Description @@ -244,7 +244,7 @@ The `lower-half` driver provides standardized `struct timer_ops_s` interfaces fo #### Interface Definitions -The following is the detailed definition of [struct timer_ops_s](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/timer.h): +The following is the detailed definition of [struct timer_ops_s](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/timer.h): ```c struct timer_ops_s @@ -486,7 +486,7 @@ The lower-half is the driver interface part that implements hardware functions, In the ARMv7-M Arch Timer adaptation, the lower-half methods appear as follows: -File path: [arch/arm/src/armv7-m/arm_systick.c](../../../../../../../../nuttx/blob/trunk/arch/arm/src/armv7-m/arm_systick.c) +File path: [arch/arm/src/armv7-m/arm_systick.c](../../../../../../../../nuttx/blob/trunk-5.4/arch/arm/src/armv7-m/arm_systick.c) ```c /* "Lower half" driver methods */ @@ -509,7 +509,7 @@ This chapter briefly introduces POSIX API interfaces related to timers and clock The following is a brief overview of timing-related POSIX APIs. For specific usage of these interfaces, please refer to the relevant `man` pages. -Header file location: [include/time.h](../../../../../../../../nuttx/blob/trunk/include/time.h) +Header file location: [include/time.h](../../../../../../../../nuttx/blob/trunk-5.4/include/time.h) 1. `timer_create` @@ -584,7 +584,7 @@ Application-level programs can directly operate the timer through the `ioctl` fu #### Supported IOCTL Commands -The following are currently supported IOCTL commands, with related interface definitions in [include/nuttx/timers/timer.h](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/timer.h): +The following are currently supported IOCTL commands, with related interface definitions in [include/nuttx/timers/timer.h](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/timer.h): - `TCIOC_START`: Start the timer. - `TCIOC_STOP`: Stop the timer. diff --git a/en/device_dev_guide/graphics/Framebuffer_Driver.md b/en/device_dev_guide/graphics/Framebuffer_Driver.md index 4c1d35fc..9a311d08 100644 --- a/en/device_dev_guide/graphics/Framebuffer_Driver.md +++ b/en/device_dev_guide/graphics/Framebuffer_Driver.md @@ -60,7 +60,7 @@ openvela's Framebuffer user interface resembles Linux systems, offering standard ### 2. Lower-level Driver Interface -openvela's Framebuffer driver interface for managing LCD devices is designed with simplicity. Developers can refer to [video/fb.h](../../../../../../nuttx/blob/trunk/include/nuttx/video/fb.h) and [/drivers/video/fb.c](../../../../../../nuttx/blob/trunk/drivers/video/fb.c). Below is the `fb_register()` source code showing key parts of the Framebuffer device driver implementation: +openvela's Framebuffer driver interface for managing LCD devices is designed with simplicity. Developers can refer to [video/fb.h](../../../../../../nuttx/blob/trunk-5.4/include/nuttx/video/fb.h) and [/drivers/video/fb.c](../../../../../../nuttx/blob/trunk-5.4/drivers/video/fb.c). Below is the `fb_register()` source code showing key parts of the Framebuffer device driver implementation: ```C int fb_register(int display, int plane) @@ -340,5 +340,5 @@ To prevent screen tearing and improve rendering performance, it is recommended t Here are the links to the code repository related to Framebuffer driver: -- [fb.c](../../../../../../nuttx/blob/trunk/drivers/video/fb.c):Framebuffer Implementation files of the driver. -- [fb.h](../../../../../../nuttx/blob/trunk/include/nuttx/video/fb.h):Framebuffer Interface definitions of the driver. +- [fb.c](../../../../../../nuttx/blob/trunk-5.4/drivers/video/fb.c):Framebuffer Implementation files of the driver. +- [fb.h](../../../../../../nuttx/blob/trunk-5.4/include/nuttx/video/fb.h):Framebuffer Interface definitions of the driver. diff --git a/en/device_dev_guide/graphics/LCD_Driver.md b/en/device_dev_guide/graphics/LCD_Driver.md index 65471b79..c0011294 100644 --- a/en/device_dev_guide/graphics/LCD_Driver.md +++ b/en/device_dev_guide/graphics/LCD_Driver.md @@ -352,6 +352,6 @@ In LCD Framebuffer mode, you need to enable the following build options: ## V. Related Repositories -- [nuttx/include/nuttx/lcd/lcd.h](../../../../../../nuttx/blob/trunk/include/nuttx/lcd/lcd.h) +- [nuttx/include/nuttx/lcd/lcd.h](../../../../../../nuttx/blob/trunk-5.4/include/nuttx/lcd/lcd.h) -- [nuttx/drivers/lcd/lcd_framebuffer.c](../../../../../../nuttx/blob/trunk/drivers/lcd/lcd_framebuffer.c) +- [nuttx/drivers/lcd/lcd_framebuffer.c](../../../../../../nuttx/blob/trunk-5.4/drivers/lcd/lcd_framebuffer.c) diff --git a/en/device_dev_guide/graphics/VSync.md b/en/device_dev_guide/graphics/VSync.md index 653baeb5..b2402535 100644 --- a/en/device_dev_guide/graphics/VSync.md +++ b/en/device_dev_guide/graphics/VSync.md @@ -127,7 +127,7 @@ In most application scenarios, development is based on [libuv](https://libuv.org The core of libuv is based on [poll](https://man7.org/linux/man-pages/man2/poll.2.html). Compared to traditional semaphores, the key advantage of `poll` is its ability to monitor multiple events simultaneously. `poll` exits its blocking state as soon as any one of the monitored events occurs. The principle of libuv is illustrated in the figure below: -The openvela framebuffer driver framework provides the necessary [interface](../../../../../../nuttx/blob/trunk/drivers/video/fb.c) for `poll` to monitor whether the framebuffer is in a writable state: +The openvela framebuffer driver framework provides the necessary [interface](../../../../../../nuttx/blob/trunk-5.4/drivers/video/fb.c) for `poll` to monitor whether the framebuffer is in a writable state: ```C /**************************************************************************** @@ -520,7 +520,7 @@ static void lcdc_te_irq(int irq, void *context, void *arg) ### 2. (Not Recommended) Blocking Mode -Using semaphores for synchronization is equivalent to locking the framebuffer. The renderer must acquire the lock before each rendering operation; otherwise, it will be blocked. For the code, see this [link](../../../../../../nuttx/blob/trunk/arch/arm/src/stm32/stm32_ltdc.c). +Using semaphores for synchronization is equivalent to locking the framebuffer. The renderer must acquire the lock before each rendering operation; otherwise, it will be blocked. For the code, see this [link](../../../../../../nuttx/blob/trunk-5.4/arch/arm/src/stm32/stm32_ltdc.c). ## V Related Repositories diff --git a/en/device_dev_guide/kernel/KernelDev.md b/en/device_dev_guide/kernel/KernelDev.md index a7db980a..4b63de92 100644 --- a/en/device_dev_guide/kernel/KernelDev.md +++ b/en/device_dev_guide/kernel/KernelDev.md @@ -292,7 +292,7 @@ When a thread attempts to acquire an unavailable semaphore: #### References - For a detailed explanation of semaphores, see [Semaphore Mechanism](./resource_sync/semaphore_mechanism.md). -- For the relevant implementation code, see [openvela Semaphore](../../../../../../../open-vela/nuttx/tree/trunk/sched/semaphore). +- For the relevant implementation code, see [openvela Semaphore](../../../../../../../open-vela/nuttx/tree/trunk-5.4/sched/semaphore). ### 2. Mutexes @@ -311,7 +311,7 @@ A mutex (mutual exclusion) is a sleeping lock that enforces mutual exclusion. In #### References -- The implementation code can be found at [openvela Mutex](../../../../../../../open-vela/nuttx/tree/trunk/libs/libc/misc/lib_mutex.c). +- The implementation code can be found at [openvela Mutex](../../../../../../../open-vela/nuttx/tree/trunk-5.4/libs/libc/misc/lib_mutex.c). ### 3. Spinlocks @@ -331,7 +331,7 @@ A spinlock is a non-blocking lock. When a thread attempts to acquire a spinlock #### References -The implementation code can be found at [openvela Spinlock](../../../../../../../open-vela/nuttx/tree/trunk/include/nuttx/spinlock.h). +The implementation code can be found at [openvela Spinlock](../../../../../../../open-vela/nuttx/tree/trunk-5.4/include/nuttx/spinlock.h). ### 4. Atomic Operations @@ -350,7 +350,7 @@ Atomic operations guarantee that instructions execute indivisibly, meaning their #### References - For a detailed description of atomic operations, see the [Atomic Operations API](./resource_sync/atomic_operation.md). -- For related interface code, see [openvela atomic](../../../../../../../open-vela/nuttx/tree/trunk/include/nuttx/atomic.h). +- For related interface code, see [openvela atomic](../../../../../../../open-vela/nuttx/tree/trunk-5.4/include/nuttx/atomic.h). ### 5. IRQ Control @@ -368,7 +368,7 @@ openvela implements interrupt masking for the local CPU via `up_irq_xxx()` funct #### References - For details on interrupt system adaptation, refer to the [Interrupt System Adaptation Guide](./../../chip_porting/Interrupt_System_Adaptation_Guide.md). -- For the interface code, see the [openvela irq interface](../../../../../../../open-vela/nuttx/tree/trunk/include/nuttx/irq.h). +- For the interface code, see the [openvela irq interface](../../../../../../../open-vela/nuttx/tree/trunk-5.4/include/nuttx/irq.h). ### 6. Scheduler Control @@ -448,7 +448,7 @@ int nsh_builtin(FAR struct nsh_vtbl_s *vtbl, FAR const char *cmd, #### References -For the implementation code, see [openvela sched_lock.c](../../../../../../../open-vela/nuttx/tree/trunk/sched/sched/sched_lock.c) and [openvela sched_unlock.c](../../../../../../../open-vela/nuttx/tree/trunk/sched/sched/sched_unlock.c). +For the implementation code, see [openvela sched_lock.c](../../../../../../../open-vela/nuttx/tree/trunk-5.4/sched/sched/sched_lock.c) and [openvela sched_unlock.c](../../../../../../../open-vela/nuttx/tree/trunk-5.4/sched/sched/sched_unlock.c). ### 7. Pthread Mutexes @@ -464,7 +464,7 @@ A mutex mechanism provided by the POSIX threads (Pthread) standard, intended exc #### References -For the implementation code, see [openvela pthread](../../../../../../../open-vela/nuttx/tree/trunk/libs/libc/pthread). +For the implementation code, see [openvela pthread](../../../../../../../open-vela/nuttx/tree/trunk-5.4/libs/libc/pthread). ### 8. Choosing a Synchronization Mechanism @@ -526,7 +526,7 @@ Work queues are particularly well-suited for the following scenarios: #### References - For a detailed description of work queues, refer to the [Work Queues](./IPC/work_queue.md). -- For the implementation code, see the [openvela wqueue](../../../../../../../open-vela/nuttx/tree/trunk/sched/wqueue). +- For the implementation code, see the [openvela wqueue](../../../../../../../open-vela/nuttx/tree/trunk-5.4/sched/wqueue). ### 2. Message Queues @@ -552,7 +552,7 @@ Message queues are particularly well-suited for the following scenarios: #### References - For a detailed description of message queues, refer to the [Message Queues](./IPC/message_queue.md). -- For the implementation code, see the [openvela mqueue](../../../../../../../open-vela/nuttx/tree/trunk/sched/mqueue) source. +- For the implementation code, see the [openvela mqueue](../../../../../../../open-vela/nuttx/tree/trunk-5.4/sched/mqueue) source. ### 3. Choosing a Communication Scheme diff --git a/en/device_dev_guide/kernel/resource_sync/atomic_operation.md b/en/device_dev_guide/kernel/resource_sync/atomic_operation.md index a0c5febd..0ba00059 100644 --- a/en/device_dev_guide/kernel/resource_sync/atomic_operation.md +++ b/en/device_dev_guide/kernel/resource_sync/atomic_operation.md @@ -22,8 +22,8 @@ In cases where the compiler or target hardware lacks adequate support for atomic Developers can control this behavior using the kernel configuration option `CONFIG_LIBC_ARCH_ATOMIC`. If this option is enabled, the system will link against the software emulation functions defined in `arch_atomic.c` instead of using the compiler's built-in functions. -- **Source Path**: [nuttx/libs/libc/machine/arch_atomic.c](../../../../../../../nuttx/blob/trunk/libs/libc/machine/arch_atomic.c) -- **Related Build Configuration**: [nuttx/libs/libc/machine/Make.defs](../../../../../../../nuttx/blob/trunk/libs/libc/machine/Make.defs) +- **Source Path**: [nuttx/libs/libc/machine/arch_atomic.c](../../../../../../../nuttx/blob/trunk-5.4/libs/libc/machine/arch_atomic.c) +- **Related Build Configuration**: [nuttx/libs/libc/machine/Make.defs](../../../../../../../nuttx/blob/trunk-5.4/libs/libc/machine/Make.defs) ## II. Usage diff --git a/en/device_dev_guide/kernel/scheduling_interrupts/interrupt_system.md b/en/device_dev_guide/kernel/scheduling_interrupts/interrupt_system.md index 34df0d6e..afe12019 100644 --- a/en/device_dev_guide/kernel/scheduling_interrupts/interrupt_system.md +++ b/en/device_dev_guide/kernel/scheduling_interrupts/interrupt_system.md @@ -131,7 +131,7 @@ void up_trigger_irq(int irq, cpu_set_t cpuset) ### 2. Interrupt-Related Macros to be Defined -In addition to the above function implementations, the manufacturer also needs to define a series of interrupt-related macros to describe the configuration of the NVIC (Nested Vectored Interrupt Controller). These macros need to be defined in the `chips/chip_name/include/irq.h` file. For reference, see the [RTL8720C example](../../../../../../../nuttx/blob/trunk/arch/arm/src/rtl8720c/include/irq.h). +In addition to the above function implementations, the manufacturer also needs to define a series of interrupt-related macros to describe the configuration of the NVIC (Nested Vectored Interrupt Controller). These macros need to be defined in the `chips/chip_name/include/irq.h` file. For reference, see the [RTL8720C example](../../../../../../../nuttx/blob/trunk-5.4/arch/arm/src/rtl8720c/include/irq.h). The following are the macros that must be implemented and their functional descriptions: diff --git a/en/device_dev_guide/power_mgt/pm_driver_guide.md b/en/device_dev_guide/power_mgt/pm_driver_guide.md index 5b50f486..39b4e7d7 100644 --- a/en/device_dev_guide/power_mgt/pm_driver_guide.md +++ b/en/device_dev_guide/power_mgt/pm_driver_guide.md @@ -12,7 +12,7 @@ This document guides embedded developers on how to write device drivers for the A driver interacts with the PM framework through callback structures and registration functions defined in `pm.h`. -**Related Header File**: [openvela include/nuttx/power/pm.h](../../../../../../nuttx/blob/trunk/include/nuttx/power/pm.h) +**Related Header File**: [openvela include/nuttx/power/pm.h](../../../../../../nuttx/blob/trunk-5.4/include/nuttx/power/pm.h) ### 1. `pm_state_e` Power State Enumeration @@ -113,7 +113,7 @@ This is a convenience macro that registers a callback to the default `PM_IDLE_DO This section uses the stm32f7 serial driver as an example to demonstrate how to implement PM functionality step-by-step. -**Source Code Reference**: [arch/arm/src/stm32f7/stm32_serial.c](../../../../../../nuttx/blob/trunk/arch/arm/src/stm32f7/stm32_serial.c) +**Source Code Reference**: [arch/arm/src/stm32f7/stm32_serial.c](../../../../../../nuttx/blob/trunk-5.4/arch/arm/src/stm32f7/stm32_serial.c) ### Step 1: Define the Callback Structure and State Variables diff --git a/en/device_dev_guide/power_mgt/pm_framework_guide.md b/en/device_dev_guide/power_mgt/pm_framework_guide.md index 57e097aa..0248b780 100644 --- a/en/device_dev_guide/power_mgt/pm_framework_guide.md +++ b/en/device_dev_guide/power_mgt/pm_framework_guide.md @@ -6,7 +6,7 @@ This document details the core concepts, API usage, and available power manageme **Target Audience**: Embedded systems developers who need to develop or adapt power management features for a specific hardware platform. -**Related Header Files**: [openvela include/nuttx/power/pm.h](../../../../../../nuttx/blob/trunk/include/nuttx/power/pm.h) +**Related Header Files**: [openvela include/nuttx/power/pm.h](../../../../../../nuttx/blob/trunk-5.4/include/nuttx/power/pm.h) ## I. Core Concepts @@ -238,7 +238,7 @@ Governors are the core of the PM framework, implementing different power managem - **How it Works**: The simplest policy. It selects the lowest available power level that is not locked. - **Use Cases**: Suitable for domains with simple requirements. It is recommended to start PM adaptation with this governor. - **Default Behavior**: If this option is enabled, `pm_initialize` will set this governor as the default for all domains. -- **Source Code Reference**: [openvela drivers/power/pm/greedy_governor.c](../../../../../../nuttx/blob/trunk/drivers/power/pm/greedy_governor.c) +- **Source Code Reference**: [openvela drivers/power/pm/greedy_governor.c](../../../../../../nuttx/blob/trunk-5.4/drivers/power/pm/greedy_governor.c) - **Configuration Options**: @@ -254,7 +254,7 @@ Governors are the core of the PM framework, implementing different power managem - **How it Works**: Dynamically determines the most appropriate power state by analyzing driver activity time, the expected time to enter the next power state, and the expected time to exit the current power state. - **Use Cases**: Suitable for complex scenarios that require dynamic power adjustment based on system load. - **Default Behavior**: If the `greedy` governor is not enabled but the `activity` governor is, the latter becomes the default for all domains. -- **Source Code Reference**: [openvela drivers/power/pm/activity_governor.c](../../../../../../nuttx/blob/trunk/drivers/power/pm/activity_governor.c) +- **Source Code Reference**: [openvela drivers/power/pm/activity_governor.c](../../../../../../nuttx/blob/trunk-5.4/drivers/power/pm/activity_governor.c) - **Note**: The timing for each state is configurable. The time data for entering/exiting a power state is passed in via configuration, and all domains will be configured with the same data. @@ -292,7 +292,7 @@ Governors are the core of the PM framework, implementing different power managem pm_set_governor(PM_IDLE_DOMAIN, pm_stability_governor_initialize()); ``` -- **Source Code Reference**: [openvela drivers/power/pm/stability_governor.c](../../../../../../nuttx/blob/trunk/drivers/power/pm/stability_governor.c) +- **Source Code Reference**: [openvela drivers/power/pm/stability_governor.c](../../../../../../nuttx/blob/trunk-5.4/drivers/power/pm/stability_governor.c) - **Key Implementation Detail**: When the system wakes from `SLEEP` and returns to `IDLE`, it cannot use `last_state` to check the `WFI` hold time. Instead, it selects the deepest power level with a non-zero threshold from the configuration list (e.g., if the `SLEEP` threshold is 0 and the `STANDBY` threshold is 10, it will select `STANDBY`) as the new baseline for checking. diff --git a/en/quickstart/development_board/ESP32-S3-EYE.md b/en/quickstart/development_board/ESP32-S3-EYE.md index 5e976afa..e5e180ac 100644 --- a/en/quickstart/development_board/ESP32-S3-EYE.md +++ b/en/quickstart/development_board/ESP32-S3-EYE.md @@ -83,7 +83,7 @@ This section guides you through creating a board-specific configuration file and ### 1. Understand the esp32s3-eye Board-Level Code Structure -Before proceeding with the configuration, familiarize yourself with the Board Support Package (BSP) [directory structure](../../../../../../nuttx/tree/trunk/boards/xtensa/esp32s3/esp32s3-eye) for the `esp32s3-eye`. This will help you understand the purpose of each file. +Before proceeding with the configuration, familiarize yourself with the Board Support Package (BSP) [directory structure](../../../../../../nuttx/tree/trunk-5.4/boards/xtensa/esp32s3/esp32s3-eye) for the `esp32s3-eye`. This will help you understand the purpose of each file. ```bash esp32s3-eye/ @@ -184,8 +184,8 @@ This guide demonstrated how to port `openvela` to the ESP32-S3-EYE development b ## VII. References -- [esp32s3-eye](../../../../../../nuttx/tree/trunk/boards/xtensa/esp32s3/esp32s3-eye) -- [defconfig](../../../../../../vendor_espressif/blob/trunk/boards/esp32s3/esp32s3-eye/configs/openvela/defconfig) +- [esp32s3-eye](../../../../../../nuttx/tree/trunk-5.4/boards/xtensa/esp32s3/esp32s3-eye) +- [defconfig](../../../../../../vendor_espressif/blob/trunk-5.4/boards/esp32s3/esp32s3-eye/configs/openvela/defconfig) - [Managing esptool on virtual environment](https://nuttx.apache.org/docs/latest/platforms/xtensa/esp32s3/index.html#managing-esptool-on-virtual-environment) ## Appendix A: Wi-Fi Feature defconfig diff --git a/en/quickstart/development_board/STM32F407.md b/en/quickstart/development_board/STM32F407.md index 5705ce1c..c31f602b 100644 --- a/en/quickstart/development_board/STM32F407.md +++ b/en/quickstart/development_board/STM32F407.md @@ -81,7 +81,7 @@ This section will guide you through creating the necessary files and writing the First, create a new directory named `stm32f407-robomaster` inside `nuttx/boards/arm/stm32/`, and set up the following subdirectory and file structure. -**Code Path**: [`nuttx/boards/arm/stm32/stm32f407-robomaster/`](./../../../../../../nuttx/tree/trunk/boards/arm/stm32/stm32f407-robomaster) +**Code Path**: [`nuttx/boards/arm/stm32/stm32f407-robomaster/`](./../../../../../../nuttx/tree/trunk-5.4/boards/arm/stm32/stm32f407-robomaster) ```Plain stm32f407-robomaster diff --git a/en/quickstart/development_board/STM32F411.md b/en/quickstart/development_board/STM32F411.md index 343c960a..82c6065e 100644 --- a/en/quickstart/development_board/STM32F411.md +++ b/en/quickstart/development_board/STM32F411.md @@ -113,8 +113,8 @@ Please ensure you have the complete `openvela` source code ready locally, follow The `openvela` code follows a layered design. Understanding the key directories will help with future custom development. -- **Application Layer (Examples)**: [nuttx-apps/examples/leds](../../../../../../../open-vela/nuttx-apps/tree/trunk/examples/leds) -- **Board Support Package (BSP)**: [nuttx/boards/arm/stm32/stm32f411-minimum](../../../../../../../open-vela/nuttx/tree/trunk/boards/arm/stm32/stm32f411-minimum) +- **Application Layer (Examples)**: [nuttx-apps/examples/leds](../../../../../../../open-vela/nuttx-apps/tree/trunk-5.4/examples/leds) +- **Board Support Package (BSP)**: [nuttx/boards/arm/stm32/stm32f411-minimum](../../../../../../../open-vela/nuttx/tree/trunk-5.4/boards/arm/stm32/stm32f411-minimum) The table below briefly describes the function of core directories: diff --git a/en/quickstart/openvela_macos_quick_start.md b/en/quickstart/openvela_macos_quick_start.md index e4b0be0f..df9ebc24 100644 --- a/en/quickstart/openvela_macos_quick_start.md +++ b/en/quickstart/openvela_macos_quick_start.md @@ -106,7 +106,7 @@ After installation, you can run `repo --version` to verify it. mkdir openvela && cd openvela ``` -2. Initialize the project manifest using `repo` and specify the `trunk` branch. +2. Initialize the project manifest using `repo` and specify the `trunk-5.4` branch. Please select one of the following methods (SSH is recommended) based on your network environment and preference to initialize the repository. @@ -117,13 +117,13 @@ After installation, you can run `repo --version` to verify it. This method requires you to add your SSH public key to your GitHub account first. Please refer to the [official GitHub documentation](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account). ```bash - repo init -u ssh://git@github.com/open-vela/manifests.git -b trunk -m openvela.xml + repo init -u ssh://git@github.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml ``` - Method 2: HTTPS ```bash - repo init -u https://github.com/open-vela/manifests.git -b trunk -m openvela.xml + repo init -u https://github.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml ``` #### Option B: Download from Gitee @@ -133,13 +133,13 @@ After installation, you can run `repo --version` to verify it. This method requires you to add your SSH public key to your Gitee account first. Please refer to the [official Gitee documentation](https://gitee.com/help/articles/4191). ```bash - repo init --u ssh://git@gitee.com/open-vela/manifests.git -b trunk -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ + repo init --u ssh://git@gitee.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ ``` - Method 2: HTTPS ```bash - repo init -u https://gitee.com/open-vela/manifests.git -b trunk -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ + repo init -u https://gitee.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ ``` #### Option C: Download from GitCode @@ -149,13 +149,13 @@ After installation, you can run `repo --version` to verify it. This method requires you to add your SSH public key to your GitCode account first. Please refer to the [official GitCode documentation](https://docs.gitcode.com/docs/help/home/user_center/security_management/ssh). ```bash - repo init -u ssh://git@gitcode.com/open-vela/manifests.git -b trunk -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ + repo init -u ssh://git@gitcode.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ ``` - Method 2: HTTPS ```bash - repo init -u https://gitcode.com/open-vela/manifests.git -b trunk -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ + repo init -u https://gitcode.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ ``` 3. Run the sync command. `repo` will download all relevant source code repositories according to the manifest file (`openvela.xml`). diff --git a/en/quickstart/openvela_ubuntu_quick_start.md b/en/quickstart/openvela_ubuntu_quick_start.md index 2069eebd..dc5bb839 100644 --- a/en/quickstart/openvela_ubuntu_quick_start.md +++ b/en/quickstart/openvela_ubuntu_quick_start.md @@ -71,7 +71,7 @@ After installation, you can run `repo --version` to verify it. mkdir openvela && cd openvela ``` -2. Initialize the project manifest using `repo` and specify the `trunk` branch. +2. Initialize the project manifest using `repo` and specify the `trunk-5.4` branch. Please select one of the following methods (SSH is recommended) based on your network environment and preference to initialize the repository. @@ -82,13 +82,13 @@ After installation, you can run `repo --version` to verify it. This method requires you to add your SSH public key to your GitHub account first. Please refer to the [official GitHub documentation](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account). ```bash - repo init -u ssh://git@github.com/open-vela/manifests.git -b trunk -m openvela.xml --git-lfs + repo init -u ssh://git@github.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --git-lfs ``` - Method 2: HTTPS ```bash - repo init -u https://github.com/open-vela/manifests.git -b trunk -m openvela.xml --git-lfs + repo init -u https://github.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --git-lfs ``` #### Option B: Download from Gitee @@ -98,13 +98,13 @@ After installation, you can run `repo --version` to verify it. This method requires you to add your SSH public key to your Gitee account first. Please refer to the [official Gitee documentation](https://gitee.com/help/articles/4191). ```bash - repo init --u ssh://git@gitee.com/open-vela/manifests.git -b trunk -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ --git-lfs + repo init --u ssh://git@gitee.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ --git-lfs ``` - Method 2: HTTPS ```bash - repo init -u https://gitee.com/open-vela/manifests.git -b trunk -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ --git-lfs + repo init -u https://gitee.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ --git-lfs ``` #### Option C: Download from GitCode @@ -114,13 +114,13 @@ After installation, you can run `repo --version` to verify it. This method requires you to add your SSH public key to your GitCode account first. Please refer to the [official GitCode documentation](https://docs.gitcode.com/docs/help/home/user_center/security_management/ssh). ```bash - repo init -u ssh://git@gitcode.com/open-vela/manifests.git -b trunk -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ --git-lfs + repo init -u ssh://git@gitcode.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ --git-lfs ``` - Method 2: HTTPS ```bash - repo init -u https://gitcode.com/open-vela/manifests.git -b trunk -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ --git-lfs + repo init -u https://gitcode.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ --git-lfs ``` 3. Execute the sync command. `repo` will download all related source code repositories according to the manifest file (`openvela.xml`). diff --git a/zh-cn/app_dev/system_apps/Dev_UI_App.md b/zh-cn/app_dev/system_apps/Dev_UI_App.md index acec1d62..da18bf8b 100644 --- a/zh-cn/app_dev/system_apps/Dev_UI_App.md +++ b/zh-cn/app_dev/system_apps/Dev_UI_App.md @@ -5,7 +5,7 @@ ## 一、前提条件 1. 下载源码,请参见[快速入门](./../../quickstart/openvela_ubuntu_quick_start.md)。 -2. 在开始本教程之前,请从 [music_player](./../../../../../../packages_demos/tree/trunk/music_player) 获取示例代码。 +2. 在开始本教程之前,请从 [music_player](./../../../../../../packages_demos/tree/trunk-5.4/music_player) 获取示例代码。 ## 二、前置概念 diff --git a/zh-cn/chip_porting/Interrupt_System_Adaptation_Guide.md b/zh-cn/chip_porting/Interrupt_System_Adaptation_Guide.md index f3583cf6..69727c42 100644 --- a/zh-cn/chip_porting/Interrupt_System_Adaptation_Guide.md +++ b/zh-cn/chip_porting/Interrupt_System_Adaptation_Guide.md @@ -127,7 +127,7 @@ ### 2、需要定义的中断相关宏 -除上面的函数实现,厂商还需定义一系列中断相关的宏,用于描述 NVIC(Nested vectored interrupt controller) 的配置,这些宏需定义在`chips/chip_name/include/irq.h` 文件中。可参考 [RTL8720C 示例](../../../../../nuttx/blob/trunk/arch/arm/src/rtl8720c/include/irq.h)。 +除上面的函数实现,厂商还需定义一系列中断相关的宏,用于描述 NVIC(Nested vectored interrupt controller) 的配置,这些宏需定义在`chips/chip_name/include/irq.h` 文件中。可参考 [RTL8720C 示例](../../../../../nuttx/blob/trunk-5.4/arch/arm/src/rtl8720c/include/irq.h)。 以下是必须实现的宏及其功能说明: diff --git a/zh-cn/debugging_tools/offline_debugging/backtrace.md b/zh-cn/debugging_tools/offline_debugging/backtrace.md index 6f459dcd..d175102a 100644 --- a/zh-cn/debugging_tools/offline_debugging/backtrace.md +++ b/zh-cn/debugging_tools/offline_debugging/backtrace.md @@ -97,7 +97,7 @@ CONFIG_FRAME_POINTER=y CONFIG_SCHED_BACKTRACE=y ``` -更多信息参考:[RISC-V Backtrace 实现](../../../../../../nuttx/blob/trunk/arch/risc-v/src/common/riscv_backtrace.c) +更多信息参考:[RISC-V Backtrace 实现](../../../../../../nuttx/blob/trunk-5.4/arch/risc-v/src/common/riscv_backtrace.c) ### 4、Xtensa diff --git a/zh-cn/dev_board/Development_Board.md b/zh-cn/dev_board/Development_Board.md index 540b669c..4a15c5bb 100644 --- a/zh-cn/dev_board/Development_Board.md +++ b/zh-cn/dev_board/Development_Board.md @@ -8,6 +8,6 @@ | 意法半导体 (STMicroelectronics) | STM32F411CEU6 | [STM32F411CE](https://www.st.com/en/microcontrollers-microprocessors/stm32f411ce.html) | [在 STM32F411 上使用 openvela 点亮 LED](../quickstart/development_board/STM32F411.md) | 物联网、工业自动化 | [购买链接](https://item.taobao.com/item.htm?abbucket=11&id=594670660262&ns=1&pisk=g--sY9MMDTfFh3IYhNDUVsm6s9IjkvorC-6vEKEaHGITDxO2Tn7AgVAflIRhkhSwQB1vaB1T0qfaci9XiIRXnAXAMIdfgFuE4dvGmihzG0oyIpevwdA_WlpKHtBuMv7TzUdWfihramaUpNcNDIRWgwmLJTfdBtCADvwdUtjAHOIxd6BfErF9MIHC9tBfHrCYXJedH6UTBsBY9pB5UsBAHZHBp6XADsdAWv9pPvPC3V6vCYgJpnSrQjJdOoEvA9hcbdwLfT-PC9CWBhwaQxX15_pOOfhY-UbW6ZtmFkOBcs_VZN2-EMpk8CBCVcNlCep5XTttnrSJrBtfyggqIG-MBUQv2j4vNCx66U9U1us2fpKNKIw87dbv8hbkbXE12UvNbEd-TP59PtIPVu57qiUbdaqfd_kIdr4DOa-FTSi8kjbOKOnrdvNQoNBhd9MIdr4cW9XtivMQOrf..&priceTId=2147831d17537712154442218e1cfd&spm=a21n57.sem.item.50.51873903rAXiL0&utparam={"aplus_abtest"%3A"88650fbdf45c34af5c7b5b5527a5bc29"}&xxc=taobaoSearch) | [ST MCU 中国支持](mailto:mcu.china@st.com) | | 乐鑫科技 (Espressif) | [ESP32S3EYE](https://www.espressif.com.cn/zh-hans/dev-board/esp32-s3-eye-cn) | [ESP32S3](https://www.espressif.com.cn/zh-hans/products/socs/esp32-s3) | [在 ESP32-S3-EYE 开发板上移植 openvela](../quickstart/development_board/ESP32-S3-EYE.md) | AIoT、人机交互、智能家居 | [购买链接](https://item.taobao.com/item.htm?spm=a21n57.sem.item.1.3d75390372IH5V&priceTId=2147816e17537599042042013e18b1&utparam={"aplus_abtest"%3A"63d6c7ec4d03ab8b3f05e1c978046905"}&id=664295688431&ns=1&abbucket=5&xxc=taobaoSearch&pisk=g6ojYejoDsfX9HqOCrvPA5v-azq11L-ehOwtKAIVBoEAXdGZaczT_Ec_5fluWmrq3bNtTbNAbFVVflMssflsIK2T6fh__q8yYxD0jldF5H-EnbrNkflbWSHJBJ2UHLzA82hIcldeTh_PerA4XflBXBtRyJV8HReAXL18pJZTBlevF7e_KNCx6fp7yRy1HsFT68K8Q7QOW5U92geQH1ITMrpSe72TX5hTWLM-ZlsbUKNohpTpMPPB8XDYNGItDh48OaP8E8iSOrFLl7stU0wblWHxA9rsb8nrVyzPQQq-K4lYFktft-g-doesjpQ_1Pi0V-gksn4jpRhg00pOkW3qgunxROItFoNr60aAGQNKmYn32z-pdYnogxmSQOKTUXP-nmE6vpqbDSE7EcRlD5g-Wmz0jsd_s0M-DVsPMMPQLCb1Fyj_FWJWFNbihI1rYxEZcdaYE8RwFL_EIreuFWJWFNbgk82rQL958Af..) | [乐鑫开发者社区](https://www.espressif.com.cn/zh-hans/contact-us/technical-inquiries) | | 乐鑫科技 (Espressif) | [ESP32S3BOX](https://www.espressif.com.cn/zh-hans/news/ESP32-S3-BOX_video) | [ESP32S3](https://www.espressif.com.cn/zh-hans/products/socs/esp32-s3) | [请参考:在 ESP32-S3-EYE 开发板上移植 openvela](../quickstart/development_board/ESP32-S3-EYE.md) | AIoT、人机交互、智能家居 | [购买链接](https://item.taobao.com/item.htm?id=732842971319&pisk=gOJq2JVGWxHVbZ7AiL6a8Sea8mWA3OuCnd_1jhxGcZbcldTwjGsanSVco3xlxawsDtGOQF7yWZ1fnZwNQh8951v15drvUey_hqhvjRW1I2gIdvtYGOBiRBruwraAAiqmCibcqtI6UFpmpvtvDNE4SDOodlr9DuE0sNYGE_jAbOj0IZmPEGIGI-fgn3blyaXGj1j0r_jCvo2ciF4lrGS0IGV0nTblfiWGSFXi43bRbObiw4vHBzS1i0bPYQmK2MCV-nbzL3pPmpFv0ali_LRcgw2CzR2MUi-ZrOVgLf_H9Z1C8UD73O-lbU5Bg2y27hxps_JaomTHmEppsnkr-t9vmBfMKVFM8t8NtKfzjJBVEaXPqpm_9a9PlFvVZDwF1TvCttASwq113M8MHEraIexWAKCJQ2zlWIsdEGJtx57Nsg58WgmIXdd4S55c2g7I40o60-dJbzfdD5FOMmIPRmf065Cc2g7I40PT6sLA4wici&spm=a1z10.3-c.w4002-8715811646.9.4dc69a382dycIm) | [乐鑫开发者社区](https://www.espressif.com.cn/zh-hans/contact-us/technical-inquiries) | -| 恒玄科技 (Bestechnic) | [BES2600WM MAIN BOARD V1.1](https://www.fortune-co.com/index.php?s=/Cn/Public/singlePage/catid/176.html) | BES2600WM-AX4F | [Readme](../../../../../vendor_bes/blob/trunk/boards/best2003_ep/aos_evb/Readme) | 智能穿戴、AI 玩具 | [联系代理商](https://www.fortune-co.com/Tech/projectDetail/id/64.html) | [联系代理商](https://www.fortune-co.com/Tech/projectDetail/id/64.html) | +| 恒玄科技 (Bestechnic) | [BES2600WM MAIN BOARD V1.1](https://www.fortune-co.com/index.php?s=/Cn/Public/singlePage/catid/176.html) | BES2600WM-AX4F | [Readme](../../../../../vendor_bes/blob/trunk-5.4/boards/best2003_ep/aos_evb/Readme) | 智能穿戴、AI 玩具 | [联系代理商](https://www.fortune-co.com/Tech/projectDetail/id/64.html) | [联系代理商](https://www.fortune-co.com/Tech/projectDetail/id/64.html) | | 旗芯微半导体 | [FC7300F8M-EVB](https://www.flagchip.com.cn/Pro/3/3.html) | [FC7300F8MDT](https://www.flagchip.com.cn/Pro/3/3.html) | [FC7300F8M-EVB 开发板 openvela 运行指南](../quickstart/development_board/fc7300f8m_evb_guide.md) | 域/区控制器、驾驶辅助系统、电池管理系统、电机控制等 | [联系代理商](https://www.flagchip.com.cn/Pro/3/3.html) | [联系代理商](https://www.flagchip.com.cn/Pro/3/3.html) | | 英飞凌半导体 | [TC4D9-EVB](https://itools.infineon.com/aurix_tc4xx_code_examples/documents/Board_Users_Manual_TriBoard-TC4X9-COM-V2_0_0.pdf) | [AURIX ™ TC4x](https://www.infineon.cn/products/microcontroller/32-bit-tricore/aurix-tc4x/tc4dx#products) | [TC4D9-EVB 开发板 openvela 运行指南](../quickstart/development_board/tc4d9_evb_guide.md) | 车辆运动控制器、区域控制器、车载网关等 | [联系代理商](https://www.infineon.cn/contact-us/where-to-buy) | [联系代理商](https://www.infineon.cn/contact-us/where-to-buy) | \ No newline at end of file diff --git a/zh-cn/device_dev_guide/connection/bluetooth/how_to_add_a_bluetooth_driver.md b/zh-cn/device_dev_guide/connection/bluetooth/how_to_add_a_bluetooth_driver.md index 0de59336..db62eddd 100644 --- a/zh-cn/device_dev_guide/connection/bluetooth/how_to_add_a_bluetooth_driver.md +++ b/zh-cn/device_dev_guide/connection/bluetooth/how_to_add_a_bluetooth_driver.md @@ -18,20 +18,20 @@ ### 示例 #### 说明 -- 为了便于在 QEMU 环境中快速验证自定义的成员函数与驱动注册功能,本示例将直接在 [drivers_initialize](../../../../../../../nuttx/blob/trunk/drivers/drivers_initialize.c) 函数中实现 `struct bt_driver_s` 的成员函数,并完成驱动注册。 -- 但在实际接入或使用时,建议在 [vendor](../../../../../../../vendor_template/blob/trunk/boards/chip_name/board_name/src) 目录下创建一个独立的文件进行代码编写,以便于维护和版本管理。 +- 为了便于在 QEMU 环境中快速验证自定义的成员函数与驱动注册功能,本示例将直接在 [drivers_initialize](../../../../../../../nuttx/blob/trunk-5.4/drivers/drivers_initialize.c) 函数中实现 `struct bt_driver_s` 的成员函数,并完成驱动注册。 +- 但在实际接入或使用时,建议在 [vendor](../../../../../../../vendor_template/blob/trunk-5.4/boards/chip_name/board_name/src) 目录下创建一个独立的文件进行代码编写,以便于维护和版本管理。 #### 操作步骤 -1. 在 [drivers_initialize.c](../../../../../../../nuttx/blob/trunk/drivers/drivers_initialize.c) 文件中添加 [bt_driver.h](../../../../../../../nuttx/blob/trunk/include/nuttx/wireless/bluetooth/bt_driver.h) 头文件引用: +1. 在 [drivers_initialize.c](../../../../../../../nuttx/blob/trunk-5.4/drivers/drivers_initialize.c) 文件中添加 [bt_driver.h](../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/wireless/bluetooth/bt_driver.h) 头文件引用: ```C #include /* 添加bt_driver.h头文件引用 */ ``` -2. 在 [drivers_initialize.c](../../../../../../../nuttx/blob/trunk/drivers/drivers_initialize.c) 文件中完成成员函数的实现编写。 +2. 在 [drivers_initialize.c](../../../../../../../nuttx/blob/trunk-5.4/drivers/drivers_initialize.c) 文件中完成成员函数的实现编写。 - 在 openvela 中,`struct bt_driver_s` 的 `receive` 成员函数已经在 [uart_bth4.c](../../../../../../../nuttx/blob/trunk/drivers/serial/uart_bth4.c) 文件中提供了默认实现。因此,开发者或厂商无需重新定义或实现此方法。 + 在 openvela 中,`struct bt_driver_s` 的 `receive` 成员函数已经在 [uart_bth4.c](../../../../../../../nuttx/blob/trunk-5.4/drivers/serial/uart_bth4.c) 文件中提供了默认实现。因此,开发者或厂商无需重新定义或实现此方法。 ```C /* 以下为示例实现,仅做示范。 @@ -67,7 +67,7 @@ /* 4. receive成员函数在驱动注册时由openvela指定 */ ``` -3. 在 [drivers_initialize.c](../../../../../../../nuttx/blob/trunk/drivers/drivers_initialize.c) 文件中,完成 `struct bt_driver_s` 结构体的定义。 +3. 在 [drivers_initialize.c](../../../../../../../nuttx/blob/trunk-5.4/drivers/drivers_initialize.c) 文件中,完成 `struct bt_driver_s` 结构体的定义。 以下代码展示了一个完整的 `struct bt_driver_s` 结构体初始化示例,其中函数指针被赋值为上面定义的示例函数: @@ -93,13 +93,13 @@ - `bt_driver_register_with_id(FAR struct bt_driver_s *driver, int id)`:注册指定 id 编号。 -`int bt_driver_register(FAR struct bt_driver_s *drv)` 类型定义可参考头文件 [bt_driver.h](../../../../../../../nuttx/blob/trunk/include/nuttx/wireless/bluetooth/bt_driver.h)。对于 `receive()` 成员函数,厂商或开发者无需定义,BTH4 驱动会为其初始化。调用关系如下图所示: +`int bt_driver_register(FAR struct bt_driver_s *drv)` 类型定义可参考头文件 [bt_driver.h](../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/wireless/bluetooth/bt_driver.h)。对于 `receive()` 成员函数,厂商或开发者无需定义,BTH4 驱动会为其初始化。调用关系如下图所示: ![img](img/bt_driver.png) ### 示例 -完成上述实现驱动示例代码编写后,需要在 [drivers_initialize.c](../../../../../../../nuttx/blob/trunk/drivers/drivers_initialize.c) 文件内的 `drivers_initialize()` 函数末尾,调用驱动注册 API 完成驱动的注册操作: +完成上述实现驱动示例代码编写后,需要在 [drivers_initialize.c](../../../../../../../nuttx/blob/trunk-5.4/drivers/drivers_initialize.c) 文件内的 `drivers_initialize()` 函数末尾,调用驱动注册 API 完成驱动的注册操作: ```C void drivers_initialize(void) diff --git a/zh-cn/device_dev_guide/driver/driver_development.md b/zh-cn/device_dev_guide/driver/driver_development.md index 855c14f8..e8c54b20 100644 --- a/zh-cn/device_dev_guide/driver/driver_development.md +++ b/zh-cn/device_dev_guide/driver/driver_development.md @@ -85,7 +85,7 @@ openvela 的设备驱动依赖于 Pseudo Root File System,类似于 Linux 的 **系统调用 -> VFS(Virtual File System)-> 驱动**。 -为了理解驱动如何注册到文件系统中,需要先了解相关的数据结构。这些数据结构的定义位于 [`include/nuttx/fs/fs.h`](../../../../../../nuttx/blob/trunk/include/nuttx/fs/fs.h)文件中。 +为了理解驱动如何注册到文件系统中,需要先了解相关的数据结构。这些数据结构的定义位于 [`include/nuttx/fs/fs.h`](../../../../../../nuttx/blob/trunk-5.4/include/nuttx/fs/fs.h)文件中。 #### 驱动注册与`inode` diff --git a/zh-cn/device_dev_guide/driver/timer_driver/timer/Arch_Alarm.md b/zh-cn/device_dev_guide/driver/timer_driver/timer/Arch_Alarm.md index 58bb5f8d..62f99bdc 100644 --- a/zh-cn/device_dev_guide/driver/timer_driver/timer/Arch_Alarm.md +++ b/zh-cn/device_dev_guide/driver/timer_driver/timer/Arch_Alarm.md @@ -18,7 +18,7 @@ openvela 提供通用的 **oneshot** 驱动,即一次性(非周期性)定 - **Upper half**:面向应用,由 openvela 提供,无需芯片厂商修改。 - **Lower half**:特定平台的硬件控制驱动,芯片厂商需适配提供。 -**oneshot** 驱动相关接口信息在 [oneshot.h](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/oneshot.h) 文件中,同样也分为了 **Upper half** 和 **Lower half** 两层接口。 +**oneshot** 驱动相关接口信息在 [oneshot.h](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/oneshot.h) 文件中,同样也分为了 **Upper half** 和 **Lower half** 两层接口。 ### 2、Arch_alarm 定时器简介 @@ -47,7 +47,7 @@ openvela 的 Upper half 部分中的 **`up_timer_initialize`** 函数,必须 ## 三、Arch_alarm API -`arch_alarm` 提供一系列接口,以满足 sched 模块对定时器的需求。接口信息可在 [arch.h](../../../../../../../../nuttx/blob/trunk/include/nuttx/arch.h) 头文件中查找。 +`arch_alarm` 提供一系列接口,以满足 sched 模块对定时器的需求。接口信息可在 [arch.h](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/arch.h) 头文件中查找。 ### 1、接口分类 @@ -193,7 +193,7 @@ grep -rE "CONFIG_ONESHOT|CONFIG_ALARM_ARCH|CONFIG_ARCH_HAVE_TICKLESS|CONFIG_ARCH ##### 实例创建:调用 `oneshot_initialize` -在板级初始化阶段,需调用**厂商自定义的初始化函数**,完成 [struct oneshot_lowerhalf_s](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/oneshot.h#L226) 结构体的分配与初始化。该函数由 openvela 框架提供,原型如下: +在板级初始化阶段,需调用**厂商自定义的初始化函数**,完成 [struct oneshot_lowerhalf_s](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/oneshot.h#L226) 结构体的分配与初始化。该函数由 openvela 框架提供,原型如下: ```C /**************************************************************************** @@ -224,7 +224,7 @@ FAR struct oneshot_lowerhalf_s *oneshot_initialize(int chan, uint16_t resolution ##### 设备注册:调用 `oneshot_register` -将 `oneshot_initialize` 返回的实例与系统设备模型绑定,注册字符设备节点(如 `/dev/oneshot`),并关联文件操作接口 `struct file_operations g_oneshot_ops`。函数 [oneshot_register](../../../../../../../../nuttx/blob/trunk/drivers/timers/oneshot.c#L291) 原型如下: +将 `oneshot_initialize` 返回的实例与系统设备模型绑定,注册字符设备节点(如 `/dev/oneshot`),并关联文件操作接口 `struct file_operations g_oneshot_ops`。函数 [oneshot_register](../../../../../../../../nuttx/blob/trunk-5.4/drivers/timers/oneshot.c#L291) 原型如下: ```C /**************************************************************************** @@ -272,7 +272,7 @@ int oneshot_register(FAR const char *devname, #### 2.2 参考实现与调试 -- 结构体定义:`struct oneshot_lowerhalf_s` 的成员说明详见 [oneshot.h](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/oneshot.h#L226),需按硬件特性填充中断触发、定时器启动等函数指针。 +- 结构体定义:`struct oneshot_lowerhalf_s` 的成员说明详见 [oneshot.h](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/oneshot.h#L226),需按硬件特性填充中断触发、定时器启动等函数指针。 - 实例代码:具体驱动适配示例可参考[驱动适配实例-初始化章节](#1初始化流程),注意根据目标平台(如 ARM Cortex-M/RISC-V)调整硬件寄存器操作逻辑。 - 调试建议:初始化失败时,检查 `CONFIG_ONESHOT`/`CONFIG_ALARM_ARCH` 是否正确使能,并利用串口日志打印 `oneshot_initialize` 的返回值。 @@ -296,7 +296,7 @@ int oneshot_register(FAR const char *devname, #### 3.2 核心接口说明 -Upper-half 接口定义于 [arch.h](../../../../../../../../nuttx/blob/trunk/include/nuttx/arch.h#L1460),主要供调度器(Sched)调用。 +Upper-half 接口定义于 [arch.h](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/arch.h#L1460),主要供调度器(Sched)调用。 ### 4、Lower-half 接口 @@ -323,7 +323,7 @@ Upper-half 接口定义于 [arch.h](../../../../../../../../nuttx/blob/trunk/inc - 厂商选择 - 根据硬件能力选择实现 `timespec` 或 `tick` 接口组。 - - 未实现的接口组可通过 openvela 内置的[转换函数](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/oneshot.h)自动映射。 + - 未实现的接口组可通过 openvela 内置的[转换函数](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/oneshot.h)自动映射。 - 性能优化 @@ -331,7 +331,7 @@ Upper-half 接口定义于 [arch.h](../../../../../../../../nuttx/blob/trunk/inc #### 4.2 核心接口说明 -`struct oneshot_operations_s` 定义于 [oneshot.h](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/oneshot.h),其成员函数如下。 +`struct oneshot_operations_s` 定义于 [oneshot.h](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/oneshot.h),其成员函数如下。 ##### 定时器控制接口 @@ -432,7 +432,7 @@ board_late_initialize (或 board_app_initialize) #### 1.2 关键代码实现 -- 硬件(Arch 层)定时器初始化,参考代码 [arch/risc-v/src/bl602/bl602_timerisr.c](../../../../../../../../nuttx/blob/trunk/arch/risc-v/src/bl602/bl602_timerisr.c#L57)。 +- 硬件(Arch 层)定时器初始化,参考代码 [arch/risc-v/src/bl602/bl602_timerisr.c](../../../../../../../../nuttx/blob/trunk-5.4/arch/risc-v/src/bl602/bl602_timerisr.c#L57)。 ```C /**************************************************************************** @@ -456,7 +456,7 @@ board_late_initialize (或 board_app_initialize) } ``` -- Oneshot 驱动实例化,参考代码 [arch/risc-v/src/bl602/bl602_oneshot_lowerhalf.c](../../../../../../../../nuttx/blob/trunk/arch/risc-v/src/bl602/bl602_oneshot_lowerhalf.c#L361)。 +- Oneshot 驱动实例化,参考代码 [arch/risc-v/src/bl602/bl602_oneshot_lowerhalf.c](../../../../../../../../nuttx/blob/trunk-5.4/arch/risc-v/src/bl602/bl602_oneshot_lowerhalf.c#L361)。 ```C struct oneshot_lowerhalf_s *oneshot_initialize(int chan, @@ -520,7 +520,7 @@ board_late_initialize (或 board_app_initialize) ### 2、Lower-half 接口实现 -操作接口绑定如下,详细代码请参考 [arch/risc-v/src/bl602/bl602_oneshot_lowerhalf.c](../../../../../../../../nuttx/blob/trunk/arch/risc-v/src/bl602/bl602_oneshot_lowerhalf.c#L96)。 +操作接口绑定如下,详细代码请参考 [arch/risc-v/src/bl602/bl602_oneshot_lowerhalf.c](../../../../../../../../nuttx/blob/trunk-5.4/arch/risc-v/src/bl602/bl602_oneshot_lowerhalf.c#L96)。 ```C /* "Lower half" driver methods */ @@ -545,7 +545,7 @@ openvela 提供标准定时器接口,支持高精度时间管理与设备控 man timer_create ``` -详细代码请参见 [include/time.h](../../../../../../../../nuttx/blob/trunk/include/time.h#L233)。 +详细代码请参见 [include/time.h](../../../../../../../../nuttx/blob/trunk-5.4/include/time.h#L233)。 ```C /* @@ -600,7 +600,7 @@ int timer_getoverrun(timer_t timerid); ### 2、IOCTL API -应用程序可以通过 `ioctl` 函数直接操作 Oneshot 定时器。使用该功能之前,需在系统启动(bringup)过程中注册 `/dev/oneshot` 设备节点。请参考头文件 [include/nuttx/timers/oneshot.h](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/oneshot.h#L41) 获取当前支持的 `ioctl` 命令。命令简介如下: +应用程序可以通过 `ioctl` 函数直接操作 Oneshot 定时器。使用该功能之前,需在系统启动(bringup)过程中注册 `/dev/oneshot` 设备节点。请参考头文件 [include/nuttx/timers/oneshot.h](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/oneshot.h#L41) 获取当前支持的 `ioctl` 命令。命令简介如下: - `OSIOC_START` - 功能:启动 Oneshot 定时器。 diff --git a/zh-cn/device_dev_guide/driver/timer_driver/timer/Arch_Timer.md b/zh-cn/device_dev_guide/driver/timer_driver/timer/Arch_Timer.md index f426794a..bac01392 100644 --- a/zh-cn/device_dev_guide/driver/timer_driver/timer/Arch_Timer.md +++ b/zh-cn/device_dev_guide/driver/timer_driver/timer/Arch_Timer.md @@ -164,15 +164,15 @@ grep -rE "CONFIG_TIMER|CONFIG_TIMER_ARCH|CONFIG_ARCH_HAVE_TICKLESS|CONFIG_ARCH_H 在 **board** 初始化过程,需要调用具体 **Vendor** 实现的 `***_timer_initialize` 函数完成初始化。该函数会完成以下操作: -1. 分配并初始化 [struct timer_lowerhalf_s](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/timer.h) 结构实例。 -2. 利用 [timer_register](../../../../../../../../nuttx/blob/trunk/drivers/timers/timer.c) 函数将 `timer_lowerhalf_s` 实例注册为 Timer 驱动。 +1. 分配并初始化 [struct timer_lowerhalf_s](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/timer.h) 结构实例。 +2. 利用 [timer_register](../../../../../../../../nuttx/blob/trunk-5.4/drivers/timers/timer.c) 函数将 `timer_lowerhalf_s` 实例注册为 Timer 驱动。 - 注册过程会生成 `/dev/timer` 设备节点。 - 同时将 `struct file_operations` 和 `g_timerops` 实例绑定到 `timer_lowerhalf_s` 实例。 在平台代码中,需要实现 `up_timer_initialize` 函数,用于调用 `up_timer_set_lowerhalf` 函数,将 `***_timer_initialize` 返回的实例绑定到系统中,作为系统定时器。 -相关接口定义在:[/include/nuttx/timers/timer.h](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/timer.h)。 +相关接口定义在:[/include/nuttx/timers/timer.h](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/timer.h)。 #### `timer_register` 函数说明 @@ -244,7 +244,7 @@ FAR void *timer_register(FAR const char *path, #### 接口定义 -以下是 [struct timer_ops_s](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/timer.h) 的详细定义: +以下是 [struct timer_ops_s](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/timer.h) 的详细定义: ```C struct timer_ops_s @@ -487,7 +487,7 @@ struct timer_lowerhalf_s *systick_initialize(bool coreclk, 在 ARMv7-M 的 Arch Timer 适配中,`lower-half` 方法的出现形式如下: -文件路径: [arch/arm/src/armv7-m/arm_systick.c](../../../../../../../../nuttx/blob/trunk/arch/arm/src/armv7-m/arm_systick.c) +文件路径: [arch/arm/src/armv7-m/arm_systick.c](../../../../../../../../nuttx/blob/trunk-5.4/arch/arm/src/armv7-m/arm_systick.c) ```C /* "Lower half" driver methods */ @@ -510,7 +510,7 @@ static const struct timer_ops_s g_systick_ops = 以下是定时相关 POSIX API 的简要概述,这些接口的具体使用方法请参考相关的 `man` 页面。 -头文件位置:[include/time.h](../../../../../../../../nuttx/blob/trunk/include/time.h) +头文件位置:[include/time.h](../../../../../../../../nuttx/blob/trunk-5.4/include/time.h) 1. `timer_create` @@ -586,7 +586,7 @@ static const struct timer_ops_s g_systick_ops = #### 支持的 IOCTL 命令 -以下是当前支持的 IOCTL 命令,相关接口定义在 [include/nuttx/timers/timer.h](../../../../../../../../nuttx/blob/trunk/include/nuttx/timers/timer.h) 中: +以下是当前支持的 IOCTL 命令,相关接口定义在 [include/nuttx/timers/timer.h](../../../../../../../../nuttx/blob/trunk-5.4/include/nuttx/timers/timer.h) 中: - `TCIOC_START`:启动定时器。 - `TCIOC_STOP`:停止定时器。 diff --git a/zh-cn/device_dev_guide/graphics/Framebuffer_Driver.md b/zh-cn/device_dev_guide/graphics/Framebuffer_Driver.md index 73eea291..6249769e 100644 --- a/zh-cn/device_dev_guide/graphics/Framebuffer_Driver.md +++ b/zh-cn/device_dev_guide/graphics/Framebuffer_Driver.md @@ -60,7 +60,7 @@ openvela 的 Framebuffer 用户接口类似于 Linux 系统,通过 VFS(虚 ### 2、下层驱动接口 -openvela 的 Framebuffer 驱动接口用于管理 LCD 设备,设计相对简单。开发者可以参考 [video/fb.h](../../../../../../nuttx/blob/trunk/include/nuttx/video/fb.h) 和 [/drivers/video/fb.c](../../../../../../nuttx/blob/trunk/drivers/video/fb.c) 文件中的实现。以下是 `fb_register()` 函数的源码,展示了与 Framebuffer 设备驱动相关的重要部分: +openvela 的 Framebuffer 驱动接口用于管理 LCD 设备,设计相对简单。开发者可以参考 [video/fb.h](../../../../../../nuttx/blob/trunk-5.4/include/nuttx/video/fb.h) 和 [/drivers/video/fb.c](../../../../../../nuttx/blob/trunk-5.4/drivers/video/fb.c) 文件中的实现。以下是 `fb_register()` 函数的源码,展示了与 Framebuffer 设备驱动相关的重要部分: ```C int fb_register(int display, int plane) @@ -340,5 +340,5 @@ CONFIG_VIDEO_FB 以下是与 Framebuffer 驱动相关的代码仓库链接: -- [fb.c](../../../../../../nuttx/blob/trunk/drivers/video/fb.c):Framebuffer 驱动的实现文件。 -- [fb.h](../../../../../../nuttx/blob/trunk/include/nuttx/video/fb.h):Framebuffer 驱动的接口定义。 +- [fb.c](../../../../../../nuttx/blob/trunk-5.4/drivers/video/fb.c):Framebuffer 驱动的实现文件。 +- [fb.h](../../../../../../nuttx/blob/trunk-5.4/include/nuttx/video/fb.h):Framebuffer 驱动的接口定义。 diff --git a/zh-cn/device_dev_guide/graphics/LCD_Driver.md b/zh-cn/device_dev_guide/graphics/LCD_Driver.md index 1662afc6..afce25ef 100644 --- a/zh-cn/device_dev_guide/graphics/LCD_Driver.md +++ b/zh-cn/device_dev_guide/graphics/LCD_Driver.md @@ -347,5 +347,5 @@ errout_with_state: ## 五、相关仓 -- [nuttx/include/nuttx/lcd/lcd.h](../../../../../../nuttx/blob/trunk/include/nuttx/lcd/lcd.h) -- [nuttx/drivers/lcd/lcd_framebuffer.c](../../../../../../nuttx/blob/trunk/drivers/lcd/lcd_framebuffer.c) +- [nuttx/include/nuttx/lcd/lcd.h](../../../../../../nuttx/blob/trunk-5.4/include/nuttx/lcd/lcd.h) +- [nuttx/drivers/lcd/lcd_framebuffer.c](../../../../../../nuttx/blob/trunk-5.4/drivers/lcd/lcd_framebuffer.c) diff --git a/zh-cn/device_dev_guide/graphics/VSync.md b/zh-cn/device_dev_guide/graphics/VSync.md index cb5f2044..7b5184ff 100644 --- a/zh-cn/device_dev_guide/graphics/VSync.md +++ b/zh-cn/device_dev_guide/graphics/VSync.md @@ -135,7 +135,7 @@ libuv 的核心是基于 [poll](https://man7.org/linux/man-pages/man2/poll.2.htm ![img](./figures/008.svg) -openvela 的 Framebuffer 驱动框架提供了 `poll` 所需要的[接口](../../../../../../nuttx/blob/trunk/drivers/video/fb.c),用于监控 Framebuffer 是否处于可写状态: +openvela 的 Framebuffer 驱动框架提供了 `poll` 所需要的[接口](../../../../../../nuttx/blob/trunk-5.4/drivers/video/fb.c),用于监控 Framebuffer 是否处于可写状态: ```C /**************************************************************************** @@ -531,7 +531,7 @@ static void lcdc_te_irq(int irq, void *context, void *arg) ### 2、(不推荐)阻塞方式 -使用信号量进行同步,相当于对 Framebuffer 进行加锁操作,渲染器每次开始渲染时都需要拿到锁才能进行绘制,否则就会处于阻塞状态,代码请参见此 [链接](../../../../../../nuttx/blob/trunk/arch/arm/src/stm32/stm32_ltdc.c)。 +使用信号量进行同步,相当于对 Framebuffer 进行加锁操作,渲染器每次开始渲染时都需要拿到锁才能进行绘制,否则就会处于阻塞状态,代码请参见此 [链接](../../../../../../nuttx/blob/trunk-5.4/arch/arm/src/stm32/stm32_ltdc.c)。 ## 五、相关仓库 diff --git a/zh-cn/device_dev_guide/kernel/KernelDev.md b/zh-cn/device_dev_guide/kernel/KernelDev.md index 8099d280..8c3f67b4 100644 --- a/zh-cn/device_dev_guide/kernel/KernelDev.md +++ b/zh-cn/device_dev_guide/kernel/KernelDev.md @@ -291,7 +291,7 @@ openvela 提供多种资源同步机制,以确保多线程环境下的数据 #### 参考 - 信号量的详细说明请参见[信号量机制](./resource_sync/semaphore_mechanism.md)。 -- 相关实现代码请参见 [openvela semaphore](../../../../../../../open-vela/nuttx/tree/trunk/sched/semaphore)。 +- 相关实现代码请参见 [openvela semaphore](../../../../../../../open-vela/nuttx/tree/trunk-5.4/sched/semaphore)。 ### 2、互斥体 @@ -310,7 +310,7 @@ openvela 提供多种资源同步机制,以确保多线程环境下的数据 #### 参考 -相关实现代码可参考 [openvela mutex](../../../../../../../open-vela/nuttx/tree/trunk/libs/libc/misc/lib_mutex.c)。 +相关实现代码可参考 [openvela mutex](../../../../../../../open-vela/nuttx/tree/trunk-5.4/libs/libc/misc/lib_mutex.c)。 ### 3、自旋锁(SpinLock) @@ -330,7 +330,7 @@ openvela 提供多种资源同步机制,以确保多线程环境下的数据 #### 参考 -相关实现代码可参考 [openvela spinlock](../../../../../../../open-vela/nuttx/tree/trunk/include/nuttx/spinlock.h)。 +相关实现代码可参考 [openvela spinlock](../../../../../../../open-vela/nuttx/tree/trunk-5.4/include/nuttx/spinlock.h)。 ### 4、原子操作 @@ -349,7 +349,7 @@ openvela 提供多种资源同步机制,以确保多线程环境下的数据 #### 参考 - 原子操作的详细说明,请参见[原子操作接口](./resource_sync/atomic_operation.md)。 -- 相关接口代码请参见 [openvela atomic](../../../../../../../open-vela/nuttx/tree/trunk/include/nuttx/atomic.h)。 +- 相关接口代码请参见 [openvela atomic](../../../../../../../open-vela/nuttx/tree/trunk-5.4/include/nuttx/atomic.h)。 ### 5、开关中断(IRQ Control) @@ -367,7 +367,7 @@ openvela 通过 `up_irq_xxx()` 实现对本 CPU 的中断屏蔽控制,这些 #### 参考 - 中断系统适配详情请参考[中断系统适配指南](./../../chip_porting/Interrupt_System_Adaptation_Guide.md)。 -- 接口代码请参考 [openvela irq 接口](../../../../../../../open-vela/nuttx/tree/trunk/include/nuttx/irq.h)。 +- 接口代码请参考 [openvela irq 接口](../../../../../../../open-vela/nuttx/tree/trunk-5.4/include/nuttx/irq.h)。 ### 6、开关调度(Scheduler Control) @@ -447,7 +447,7 @@ int nsh_builtin(FAR struct nsh_vtbl_s *vtbl, FAR const char *cmd, #### 参考 -实现代码请参考 [openvela sched lock](../../../../../../../open-vela/nuttx/tree/trunk/sched/sched/sched_lock.c) 和 [openvela sched unlock](../../../../../../../open-vela/nuttx/tree/trunk/sched/sched/sched_unlock.c)。 +实现代码请参考 [openvela sched lock](../../../../../../../open-vela/nuttx/tree/trunk-5.4/sched/sched/sched_lock.c) 和 [openvela sched unlock](../../../../../../../open-vela/nuttx/tree/trunk-5.4/sched/sched/sched_unlock.c)。 ### 7、Pthread 互斥锁(Pthread Mutex) @@ -463,7 +463,7 @@ POSIX 线程标准提供的互斥锁机制,仅用于 Pthread 线程。 #### 参考 -实现代码请参考 [openvela pthread](../../../../../../../open-vela/nuttx/tree/trunk/libs/libc/pthread)。 +实现代码请参考 [openvela pthread](../../../../../../../open-vela/nuttx/tree/trunk-5.4/libs/libc/pthread)。 ### 8、同步机制的选择 @@ -525,7 +525,7 @@ openvela 支持三种工作队列类型,各具不同特性: #### 参考 - 工作队列的详细说明,可参考[工作队列](./IPC/work_queue.md)。 -- 实现代码请查看 [openvela wqueue](../../../../../../../open-vela/nuttx/tree/trunk/sched/wqueue)。 +- 实现代码请查看 [openvela wqueue](../../../../../../../open-vela/nuttx/tree/trunk-5.4/sched/wqueue)。 ### 2、消息队列 @@ -551,7 +551,7 @@ openvela 支持三种工作队列类型,各具不同特性: #### 参考 - 消息队列的详细说明请参考[消息队列](./IPC/message_queue.md)。 -- 实现代码请参考 [openvela mqueue](../../../../../../../open-vela/nuttx/tree/trunk/sched/mqueue) 源码。 +- 实现代码请参考 [openvela mqueue](../../../../../../../open-vela/nuttx/tree/trunk-5.4/sched/mqueue) 源码。 ### 3、通信方案的选择 diff --git a/zh-cn/device_dev_guide/kernel/resource_sync/atomic_operation.md b/zh-cn/device_dev_guide/kernel/resource_sync/atomic_operation.md index 1c5100d8..f4709b3b 100644 --- a/zh-cn/device_dev_guide/kernel/resource_sync/atomic_operation.md +++ b/zh-cn/device_dev_guide/kernel/resource_sync/atomic_operation.md @@ -22,8 +22,8 @@ openvela 的原子操作采用分层实现策略,优先利用硬件特性, 开发者可以通过内核配置项 `CONFIG_LIBC_ARCH_ATOMIC` 来控制此行为。若启用此选项,系统将链接 `arch_atomic.c` 文件中定义的软件模拟函数,而非编译器内建函数。 -- **源码路径**:[nuttx/libs/libc/machine/arch_atomic.c](../../../../../../../nuttx/blob/trunk/libs/libc/machine/arch_atomic.c) -- **相关构建配置**:[nuttx/libs/libc/machine/Make.defs](../../../../../../../nuttx/blob/trunk/libs/libc/machine/Make.defs) +- **源码路径**:[nuttx/libs/libc/machine/arch_atomic.c](../../../../../../../nuttx/blob/trunk-5.4/libs/libc/machine/arch_atomic.c) +- **相关构建配置**:[nuttx/libs/libc/machine/Make.defs](../../../../../../../nuttx/blob/trunk-5.4/libs/libc/machine/Make.defs) ## 二、 使用方法 diff --git a/zh-cn/device_dev_guide/kernel/scheduling_interrupts/interrupt_system.md b/zh-cn/device_dev_guide/kernel/scheduling_interrupts/interrupt_system.md index 60684f03..bb6a69bf 100644 --- a/zh-cn/device_dev_guide/kernel/scheduling_interrupts/interrupt_system.md +++ b/zh-cn/device_dev_guide/kernel/scheduling_interrupts/interrupt_system.md @@ -131,7 +131,7 @@ void up_trigger_irq(int irq, cpu_set_t cpuset) ### 2、需要定义的中断相关宏 -除上面的函数实现,厂商还需定义一系列中断相关的宏,用于描述 NVIC(Nested vectored interrupt controller) 的配置,这些宏需定义在`chips/chip_name/include/irq.h` 文件中。可参考[RTL8720C 示例](../../../../../../../nuttx/blob/trunk/arch/arm/src/rtl8720c/include/irq.h)。 +除上面的函数实现,厂商还需定义一系列中断相关的宏,用于描述 NVIC(Nested vectored interrupt controller) 的配置,这些宏需定义在`chips/chip_name/include/irq.h` 文件中。可参考[RTL8720C 示例](../../../../../../../nuttx/blob/trunk-5.4/arch/arm/src/rtl8720c/include/irq.h)。 以下是必须实现的宏及其功能说明: diff --git a/zh-cn/device_dev_guide/power_mgt/pm_driver_guide.md b/zh-cn/device_dev_guide/power_mgt/pm_driver_guide.md index f336be9f..a5c7a5e5 100644 --- a/zh-cn/device_dev_guide/power_mgt/pm_driver_guide.md +++ b/zh-cn/device_dev_guide/power_mgt/pm_driver_guide.md @@ -12,7 +12,7 @@ 驱动程序通过 `pm.h` 中定义的回调结构体和注册函数与 PM 框架进行交互。 -**相关头文件**:[openvela include/nuttx/power/pm.h](../../../../../../nuttx/blob/trunk/include/nuttx/power/pm.h) +**相关头文件**:[openvela include/nuttx/power/pm.h](../../../../../../nuttx/blob/trunk-5.4/include/nuttx/power/pm.h) ### 1、`pm_state_e` 电源状态枚举 @@ -115,7 +115,7 @@ int pm_domain_register(int domain, FAR struct pm_callback_s *cb) 本节以 stm32f7 的串口驱动为例,展示如何一步步实现 PM 功能。 -**源码参考**:[arch/arm/src/stm32f7/stm32_serial.c](../../../../../../nuttx/blob/trunk/arch/arm/src/stm32f7/stm32_serial.c) +**源码参考**:[arch/arm/src/stm32f7/stm32_serial.c](../../../../../../nuttx/blob/trunk-5.4/arch/arm/src/stm32f7/stm32_serial.c) ### 步骤 1:定义回调结构体和状态变量 diff --git a/zh-cn/device_dev_guide/power_mgt/pm_framework_guide.md b/zh-cn/device_dev_guide/power_mgt/pm_framework_guide.md index 3bdaeee9..0a80008e 100644 --- a/zh-cn/device_dev_guide/power_mgt/pm_framework_guide.md +++ b/zh-cn/device_dev_guide/power_mgt/pm_framework_guide.md @@ -6,7 +6,7 @@ **目标读者**:需要为特定硬件平台开发或适配电源管理功能的嵌入式系统开发者。 -**相关头文件**:[openvela include/nuttx/power/pm.h](../../../../../../nuttx/blob/trunk/include/nuttx/power/pm.h) +**相关头文件**:[openvela include/nuttx/power/pm.h](../../../../../../nuttx/blob/trunk-5.4/include/nuttx/power/pm.h) ## 一、核心概念 @@ -241,7 +241,7 @@ Governor 是 PM 框架的核心,它实现了不同的电源管理策略。open - **默认行为**:如果开启了选项,`pm_initialize` 会默认所有 domain 使用该策略。 -- **源码参考**:[openvela drivers/power/pm/greedy_governor.c](../../../../../../nuttx/blob/trunk/drivers/power/pm/greedy_governor.c) +- **源码参考**:[openvela drivers/power/pm/greedy_governor.c](../../../../../../nuttx/blob/trunk-5.4/drivers/power/pm/greedy_governor.c) - **配置选项**: @@ -260,7 +260,7 @@ Governor 是 PM 框架的核心,它实现了不同的电源管理策略。open - **默认行为**:若未启用 `greedy` 决策者但启用了 `activity` 决策者,则后者会成为所有域的默认选择。 -- **源码参考**:[openvela drivers/power/pm/activity_governor.c](../../../../../../nuttx/blob/trunk/drivers/power/pm/activity_governor.c) +- **源码参考**:[openvela drivers/power/pm/activity_governor.c](../../../../../../nuttx/blob/trunk-5.4/drivers/power/pm/activity_governor.c) - **说明**:每种时间可配置,通过配置传入进入/退出某个功耗状态的时间数据,所有 domain 都会被配置成同样的数据。 @@ -298,7 +298,7 @@ Governor 是 PM 框架的核心,它实现了不同的电源管理策略。open pm_set_governor(PM_IDLE_DOMAIN, pm_stability_governor_initialize()); ``` -- **源码参考**:[openvela drivers/power/pm/stability_governor.c](../../../../../../nuttx/blob/trunk/drivers/power/pm/stability_governor.c) +- **源码参考**:[openvela drivers/power/pm/stability_governor.c](../../../../../../nuttx/blob/trunk-5.4/drivers/power/pm/stability_governor.c) - **关键实现细节**:当系统从 `SLEEP` 状态唤醒并返回 `IDLE` 时,无法利用 `last_state` 进行 `WFI` 维持时间检测。此时,它会从配置列表中选择一个阈值不为零的最深功耗级别(例如,如果 `SLEEP` 阈值为 0,`STANDBY` 阈值为 10,则会选择 `STANDBY`)作为新的检测基准。 diff --git a/zh-cn/quickstart/development_board/ESP32-S3-EYE.md b/zh-cn/quickstart/development_board/ESP32-S3-EYE.md index 6e1762e6..c40145a8 100644 --- a/zh-cn/quickstart/development_board/ESP32-S3-EYE.md +++ b/zh-cn/quickstart/development_board/ESP32-S3-EYE.md @@ -83,7 +83,7 @@ ### 1、理解 `esp32s3-eye` 板级代码结构 -在进行配置之前,请先熟悉 `esp32s3-eye` 的板级支持包(BSP)[目录结构](../../../../../../nuttx/tree/trunk/boards/xtensa/esp32s3/esp32s3-eye)。这有助于您理解各个文件的作用。 +在进行配置之前,请先熟悉 `esp32s3-eye` 的板级支持包(BSP)[目录结构](../../../../../../nuttx/tree/trunk-5.4/boards/xtensa/esp32s3/esp32s3-eye)。这有助于您理解各个文件的作用。 ```bash esp32s3-eye/ @@ -184,8 +184,8 @@ rm nuttx/Make.defs ## 六、参考文档 -- [esp32s3-eye](../../../../../../nuttx/tree/trunk/boards/xtensa/esp32s3/esp32s3-eye) -- [defconfig](../../../../../../vendor_espressif/blob/trunk/boards/esp32s3/esp32s3-eye/configs/openvela/defconfig) +- [esp32s3-eye](../../../../../../nuttx/tree/trunk-5.4/boards/xtensa/esp32s3/esp32s3-eye) +- [defconfig](../../../../../../vendor_espressif/blob/trunk-5.4/boards/esp32s3/esp32s3-eye/configs/openvela/defconfig) - [Managing esptool on virtual environment](https://nuttx.apache.org/docs/latest/platforms/xtensa/esp32s3/index.html#managing-esptool-on-virtual-environment) ## 附录 A: Wi-Fi 功能 defconfig diff --git a/zh-cn/quickstart/development_board/STM32F407.md b/zh-cn/quickstart/development_board/STM32F407.md index b287eb9e..c4c6cd01 100644 --- a/zh-cn/quickstart/development_board/STM32F407.md +++ b/zh-cn/quickstart/development_board/STM32F407.md @@ -81,7 +81,7 @@ 首先,在 `nuttx/boards/arm/stm32/` 目录下,创建一个名为 `stm32f407-robomaster` 的新目录,并建立如下的子目录和文件结构。 -**代码路径**: [`nuttx/boards/arm/stm32/stm32f407-robomaster/`](./../../../../../../nuttx/tree/trunk/boards/arm/stm32/stm32f407-robomaster) +**代码路径**: [`nuttx/boards/arm/stm32/stm32f407-robomaster/`](./../../../../../../nuttx/tree/trunk-5.4/boards/arm/stm32/stm32f407-robomaster) ```Plain stm32f407-robomaster diff --git a/zh-cn/quickstart/development_board/STM32F411.md b/zh-cn/quickstart/development_board/STM32F411.md index 4ceb8912..da750e46 100644 --- a/zh-cn/quickstart/development_board/STM32F411.md +++ b/zh-cn/quickstart/development_board/STM32F411.md @@ -113,8 +113,8 @@ `openvela` 的代码遵循分层设计。了解关键目录有助于您进行后续的定制开发。 -- **应用层 (Examples)**:[nuttx-apps/examples/leds](../../../../../../../open-vela/nuttx-apps/tree/trunk/examples/leds) -- **板级支持包 (****BSP****)**:[nuttx/boards/arm/stm32/stm32f411-minimum](../../../../../../../open-vela/nuttx/tree/trunk/boards/arm/stm32/stm32f411-minimum) +- **应用层 (Examples)**:[nuttx-apps/examples/leds](../../../../../../../open-vela/nuttx-apps/tree/trunk-5.4/examples/leds) +- **板级支持包 (****BSP****)**:[nuttx/boards/arm/stm32/stm32f411-minimum](../../../../../../../open-vela/nuttx/tree/trunk-5.4/boards/arm/stm32/stm32f411-minimum) 下表简述了核心目录的功能: diff --git a/zh-cn/quickstart/openvela_macos_quick_start.md b/zh-cn/quickstart/openvela_macos_quick_start.md index 96a9788f..f1ce51b4 100644 --- a/zh-cn/quickstart/openvela_macos_quick_start.md +++ b/zh-cn/quickstart/openvela_macos_quick_start.md @@ -106,7 +106,7 @@ sudo mv repo /usr/local/bin mkdir openvela && cd openvela ``` -2. 使用 `repo` 初始化项目清单,并指定 `trunk` 分支。 +2. 使用 `repo` 初始化项目清单,并指定 `trunk-5.4` 分支。 请根据您的网络环境和偏好,从以下任一平台选择一种方式(推荐使用 SSH)来初始化仓库。 @@ -117,13 +117,13 @@ sudo mv repo /usr/local/bin 此方式需要您先将 SSH 公钥添加至您的 GitHub 账户,请参考 [GitHub 官方文档](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account)。 ```bash - repo init -u ssh://git@github.com/open-vela/manifests.git -b trunk -m openvela.xml + repo init -u ssh://git@github.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml ``` - 方式二:HTTPS ```bash - repo init -u https://github.com/open-vela/manifests.git -b trunk -m openvela.xml + repo init -u https://github.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml ``` #### 选项 B:从 Gitee 下载 @@ -133,13 +133,13 @@ sudo mv repo /usr/local/bin 此方式需要您先将 SSH 公钥添加至您的 Gitee 账户,请参考 [Gitee 官方文档](https://gitee.com/help/articles/4191)。 ```bash - repo init --u ssh://git@gitee.com/open-vela/manifests.git -b trunk -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ + repo init --u ssh://git@gitee.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ ``` - 方式二:HTTPS ```bash - repo init -u https://gitee.com/open-vela/manifests.git -b trunk -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ + repo init -u https://gitee.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ ``` #### 选项 C:从 GitCode 下载 @@ -149,13 +149,13 @@ sudo mv repo /usr/local/bin 此方式需要您先将 SSH 公钥添加至您的 GitCode 账户,请参考 [GitCode 官方文档](https://docs.gitcode.com/docs/help/home/user_center/security_management/ssh)。 ```bash - repo init -u ssh://git@gitcode.com/open-vela/manifests.git -b trunk -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ + repo init -u ssh://git@gitcode.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ ``` - 方式二:HTTPS ```bash - repo init -u https://gitcode.com/open-vela/manifests.git -b trunk -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ + repo init -u https://gitcode.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ ``` 3. 执行同步命令,`repo` 将根据清单文件 (`openvela.xml`) 下载所有相关的源代码仓库。 diff --git a/zh-cn/quickstart/openvela_ubuntu_quick_start.md b/zh-cn/quickstart/openvela_ubuntu_quick_start.md index 38bbcd35..2a279bb2 100644 --- a/zh-cn/quickstart/openvela_ubuntu_quick_start.md +++ b/zh-cn/quickstart/openvela_ubuntu_quick_start.md @@ -71,7 +71,7 @@ sudo mv repo /usr/local/bin mkdir openvela && cd openvela ``` -2. 使用 `repo` 初始化项目清单,并指定 `trunk` 分支。 +2. 使用 `repo` 初始化项目清单,并指定 `trunk-5.4` 分支。 请根据您的网络环境和偏好,从以下任一平台选择一种方式(推荐使用 SSH)来初始化仓库。 @@ -82,13 +82,13 @@ sudo mv repo /usr/local/bin 此方式需要您先将 SSH 公钥添加至您的 GitHub 账户,请参考 [GitHub 官方文档](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account)。 ```bash - repo init -u ssh://git@github.com/open-vela/manifests.git -b trunk -m openvela.xml --git-lfs + repo init -u ssh://git@github.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --git-lfs ``` - 方式二:HTTPS ```bash - repo init -u https://github.com/open-vela/manifests.git -b trunk -m openvela.xml --git-lfs + repo init -u https://github.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --git-lfs ``` #### 选项 B:从 Gitee 下载 @@ -98,13 +98,13 @@ sudo mv repo /usr/local/bin 此方式需要您先将 SSH 公钥添加至您的 Gitee 账户,请参考 [Gitee 官方文档](https://gitee.com/help/articles/4191)。 ```bash - repo init --u ssh://git@gitee.com/open-vela/manifests.git -b trunk -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ --git-lfs + repo init --u ssh://git@gitee.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ --git-lfs ``` - 方式二:HTTPS ```bash - repo init -u https://gitee.com/open-vela/manifests.git -b trunk -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ --git-lfs + repo init -u https://gitee.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ --git-lfs ``` #### 选项 C:从 GitCode 下载 @@ -114,13 +114,13 @@ sudo mv repo /usr/local/bin 此方式需要您先将 SSH 公钥添加至您的 GitCode 账户,请参考 [GitCode 官方文档](https://docs.gitcode.com/docs/help/home/user_center/security_management/ssh)。 ```bash - repo init -u ssh://git@gitcode.com/open-vela/manifests.git -b trunk -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ --git-lfs + repo init -u ssh://git@gitcode.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ --git-lfs ``` - 方式二:HTTPS ```bash - repo init -u https://gitcode.com/open-vela/manifests.git -b trunk -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ --git-lfs + repo init -u https://gitcode.com/open-vela/manifests.git -b trunk-5.4 -m openvela.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ --git-lfs ``` 3. 执行同步命令,repo 将根据清单文件 (`openvela.xml`) 下载所有相关的源代码仓库。