2. 21DAYS FREERTOS PORTING ON
RASPBERRY PI2
•Raspberry Pi2:
900 MHz quad core ARM Cortex-A7 CPU
1GB RAM
4 USB ports
40 GPIO pins
105 艾鍗科技嵌入式Linux系統工程師人才養成班
3. WHAT IS RTOS
•General purpose OS:
• Linux
• Windows
•Real-Time OS (RTOS):
• Without buffering delays
• Hard real-time
• Soft real-time
Hard real-time Soft real-time
Program no response while landing
105 艾鍗科技嵌入式Linux系統工程師人才養成班
4. TODAY RTOS ON MCU
• MCU:
• Data bus
From 8bit to 32bit
• CPU clock
ARM Cortex-M (60MHz ↑)
• RTOS:
Multi-task
Small code size
RTOS
TasksTasks TasksTask
MCU & Peripheral
Peripheral Drivers
MCU & Peripheral
Peripheral Drivers
105 艾鍗科技嵌入式Linux系統工程師人才養成班
8. ARM BOOT AND INTERRUPT
_start:
Usually start from 0x0000
Interrupt table
0x0000~0x001C (7 mode)
rest:
Basic hardware, memory
initialize and jump into OS
main function
0x00
…
…
0x1C
Interrupt
Table
RAM
105 艾鍗科技嵌入式Linux系統工程師人才養成班
9. ARM INTERRUPT
Enter IRQ
Disable IRQ
spsr_irq = cpsr
pc = 0x18
IRQ Handler
IRQ function
Leave IRQ
Enable IRQ
pc=LR - 4
spsr =
spsr_irq
0x00
0x04
0x08
0x0c
0x10
0x14
0x18
0x1C
105 艾鍗科技嵌入式Linux系統工程師人才養成班
10. SIMPLE RASPBERRY PI BOOT
• PI GPU Boot
• Black magic(closed source)
• GPU, memory, clock initialize
• Parse config.txt
• Linux Boot
• Load cmdline.txt and Linux kernel
• Send boot argument to linux kernel
• Start from 0x8000
PI GPU Boot
Linux Boot: 0x8000
Shell
FreeRTO
S
105 艾鍗科技嵌入式Linux系統工程師人才養成班
11. COMPILE A PROGRAM
Stage 1 Stage 2 Stage 3
Stage1
• Generate object file
Stage 2
• Put object together
Stage 3
• Output binary file
105 艾鍗科技嵌入式Linux系統工程師人才養成班
12. LINKER SCRIPT
•Put things to section
init, text, data, bss
•Assign section address
Put init to INIT_RAM: 0
INIT_RAM start: 0x8000
105 艾鍗科技嵌入式Linux系統工程師人才養成班
18. BOOT LOADER U-BOOT
Debug & Build
Power off
Put image to SD
card
Plug in SD
Test
Debug &
Build
U-boot tftp
get
U-boot
load
Test
105 艾鍗科技嵌入式Linux系統工程師人才養成班
19. FREERTOS IRQ INTERRUPT
Enter IRQ Mode
Save Task
Timer Handler
FreeRTOS tick
increase
Context switch if
needed
Leave IRQ Mode
Restore Task
105 艾鍗科技嵌入式Linux系統工程師人才養成班
20. FREERTOS PORTING
•Implement Timer Handler
• FreeRTOS tick increase
• Context switch if needed
•Install FreeRTOS as IRQ Handler
• Save Task
• Restore Task
105 艾鍗科技嵌入式Linux系統工程師人才養成班
21. FREEROTS PORTING FLOW
Develop
Environment
• IDE
• Toolchain
• Debug tool
Basic
knowledge
• Boot startup code
• Linker script
• Interrupt setting
Basic drivers
• LED
• GPIO
• Interrupt
FreeRTOS
• Timer ISR as tick
service
• FreeRTOS as IRQ
handler
FreeRTOS
Application
105 艾鍗科技嵌入式Linux系統工程師人才養成班