Professional Documents
Culture Documents
Nội dung:
1. Các khái niệm cơ bản về C
Tại sao lại sử dụng C trong embedded
Chuẩn ANSI C là gì
Lý thuyết cơ bản về C
2. Các kiểu dữ liệu trong C
Kiểu dữ liệu nguyên thủy : int , char
Kiểu dữ liệu người dùng tự định nghĩa : struct, typedef, union
Kiểu liệt kê : enum
Kiểu hằng số : const
Kiểu dữ liệu con trỏ
Kiểu tham chiếu
3. Tiền định nghĩa trong C/C++
Tiền định nghĩa trong C là gì ?
Ý nghĩa các từ khóa #define, #ifdef, #ifndef, #prama
Các macro định nghĩa trong C
Sử dụng toán tử trong tiền xử lý
4. Tổ chức bộ nhớ và các kiểu dữ liệu chương trình
Cấu trúc vùng nhớ của máy tính , vi điều khiển (CPU/ RAM)
Tổ chức bộ nhớ một chương trình : heap, stack , code, data, text, bss, …
Biến toàn cục, biến địa phương, biến static trong chương trình
Biến volatile, weak, extern, static, const, automic, register, …
Memory aligment trong C
5. Hàm trong C
Định nghĩa hàm trong C
Có nhiều cách để nói về khái niệm function khác nhau:
Định nghĩa : “Hàm là một đoạn lệnh có thể tái sử dụng. Hàm cho phép lập trình viên cấu trúc
chương trình thành những phân đoạn khác nhau để thực hiện những công việc khác nhau”
Các phương pháp truyền tham số vào hàm : truyền tham số, tham trị , con trỏ
Callback function
Sử dụng con trỏ hàm để làm callback function trong hàm
Khai báo
typedef void (*callback_function) (kiểu dữ liệu … )
Ứng dụng trong ngắt hoặc sử dụng gọi hàm trong event
Inline function
Con trỏ hàm
Con trỏ hằng và hằng con trỏ trong C
- Con trỏ hằng :
Là con trỏ trỏ đến vùng dữ liệu hằng. Ta không thể thay đổi giá trị mà nó đang trỏ đến. Nhưng
có thể thực hiện tăng giảm địa chỉ con trỏ hay cho nó trỏ đi nơi khác.
Khai báo : const int *p
Ví dụ:
int x = 5;
int y = 10;
int *q;
/*
x: 0086FAAC
y : 0086FAA0
------------ -
q : 0086FAA0
&q : 0086FA94
*q : 10
------------ -
p : 0086FAAC
&p : 0086FAAC
*p : 5
------------ -
&p : 0086FAAC
*p : 6
x : 6
*/
6. Mảng trong C
Định nghĩa, khai báo và sử dụng mảng
Mảng nhiều chiều và con trỏ
Mảng ký tự và string
Truyền mảng như là một tham số vào hàm
Xử lý string sử dụng và không sử dụng các hàm của thư viện
7. Các kiểu dữ liệu tự định nghĩa
Kiểu dữ liệu struct, khai báo và sử dụng
Tổ chức vùng nhớ struct
Struct data aligment
Truy cập biến trong struct
Nested structures, Array structure
Truyền struct vào hàm như tham số
Cấp phát động struct
Structure bit operation
So sánh struct với nhau
Định nghĩa Union
Overlapping member
Định nghĩa Enum, Indexing , enum và #define
8. Các toán tử về bit
AND, OR, XOR, ~, <<, >>
Mask, setting, clearing và testing of bit/bits
Thứ tự ưu tiên toán tử bit
9. Pointer (9.1 & 9.2)
Định nghĩa con trỏ
Khác biệt giữa con trỏ và tham chiếu
Các toán tử với con trỏ
Generic và null pointer
Function pointer
Array of pointers
Pointer to struct and union
Pointer to dynamic memory
Far, near and huge pointer
Pointer type casting
10. Cấp phát động
Malloc(), calloc(), realloc(), free()
Farmalloc(), Farcalloc()
11. Xử lý với file
Lý thuyết kiểu dữ liệu file
Inode, cấu trúc FILE, FILE pointer
Access and handle FILE
12. Command line Argument
Argc, argv
Ví dụ về các biến đầu vào cho hàm main
13. Compiler and Debuger
Định nghĩa compiler, assember, linker
Kỹ thuật tối ưu code
Bootloader , startup code trong vi điều khiển
Makefile cơ bản
Development Tools and Enviroment
Object and Executable File Format
Debuger
14. Cấu trúc dữ liệu
Linear and non linear data struct
Stack & Queue
Binary tree
Single, Double & Cicular Linked List (Ring buffer)
Hash
15. Realtime Embedded System
Hard Real Time and Soft Realtime
Giới thiệu về hệ điều hành RTOS
Porting RTOS và MDK RTX STM32
Thread , task, hook function
Race condition và cách khắc phục (Mutex, Semaphore, )
Truyền dữ liệu giữa các thread (Message Queue, Mailbox, …)
Memory pool
Lowpower