Năng lực cốt lõi của SW nhúng MCU Robotics và bí quyết tìm việc làm

Dựa trên những bí quyết thực tế mà một nhà phát triển đương nhiệm tại tập đoàn lớn đã trực tiếp trải nghiệm, chúng tôi giúp bạn nuôi dưỡng năng lực cốt lõi về phần mềm nhúng thực thụ mà thị trường mong muốn, vượt xa khỏi việc lập trình đơn thuần.

2 học viên đang tham gia khóa học này

Độ khó Trung cấp trở lên

Thời gian 7 tháng

Embedded
Embedded
MCU
MCU
robotics
robotics
Embedded
Embedded
MCU
MCU
robotics
robotics

Bạn sẽ nhận được điều này sau khi học.

  • Có thể trực tiếp xem datasheet và điều khiển chip ở cấp độ thấp (low-level)

  • Hiểu rõ toàn bộ vòng đời (Life Cycle) từ khi mã nguồn được biên dịch cho đến khi chip khởi động.

  • Sử dụng RTOS và môi trường build tùy chỉnh VSCode ở cấp độ thực tế chuyên nghiệp

  • Kỹ năng phân tích mạch phần cứng và gỡ lỗi dành cho kỹ sư hệ thống

Năng lực cốt lõi của SW nhúng MCU Robotics và bí quyết tìm việc làm

Dựa trên bí quyết thực tế mà các nhà phát triển tại các tập đoàn lớn đã trực tiếp trải nghiệm, chúng tôi giúp bạn phát triển năng lực cốt lõi về phần mềm nhúng (Embedded SW) thực thụ mà các công ty mong muốn, vượt xa việc lập trình đơn thuần.

Khuyên dùng cho những đối tượng sau

Sinh viên và người đang tìm việc muốn làm việc trong lĩnh vực phần mềm nhúng (Embedded SW) nhưng cảm thấy bản thân còn thiếu kiến thức nền tảng.



Một lập trình viên trẻ từng cảm thấy bế tắc về việc phần cứng thực sự hoạt động như thế nào đằng sau các thư viện.


Những ai muốn nắm vững môi trường VSCode/CMake tiêu chuẩn thực tế và khái niệm về hệ điều hành thời gian thực (RTOS).

Sau khi hoàn thành khóa học

  • Có khả năng điều khiển chip ở cấp độ thấp (low-level) bằng cách đọc trực tiếp datasheet

    • Điều khiển hoàn hảo LED, bộ định thời (timer) và giao tiếp UART bằng cách ghi dữ liệu trực tiếp vào địa chỉ thanh ghi bên trong chip mà không cần sử dụng thư viện.

  • Hiểu toàn bộ vòng đời (Life Cycle) từ khi mã nguồn được build cho đến khi chip khởi động

    • Bạn sẽ nắm vững cơ chế từ quá trình liên kết (link) chuyển đổi mã nguồn C thành file nhị phân (binary), cho đến việc đọc Reset Handler khi chip khởi động và tiến vào hàm main.

  • Xây dựng môi trường build tùy chỉnh trên VSCode cấp độ thực tế và ứng dụng RTOS

    • Thay vì sử dụng các IDE chính thức nặng nề, chúng ta sẽ biên dịch tốc độ cao bằng CMake và Ninja, đồng thời trực tiếp triển khai hoạt động đa luồng bằng cách tích hợp Azure RTOS (ThreadX).

  • Phân tích phần cứng và kỹ năng gỡ lỗi dành cho kỹ sư hệ thống

    • Bạn sẽ học cách sử dụng đồng hồ vạn năng và máy hiện sóng để giám sát tín hiệu phần cứng, đồng thời học phương pháp gỡ lỗi để chủ động tìm ra và khắc phục các hoạt động bất thường của bo mạch.


Đặc điểm của bài giảng này

  • Những 'câu chuyện thực tế sống động' không có trong sách vở

    • Một nhà phát triển robot hiện đang làm việc tại một tập đoàn lớn sẽ chia sẻ tận tình những bí quyết thực tế và mẹo xử lý sự cố (troubleshooting) xương máu, được đúc kết từ quá trình trực tiếp can thiệp vào thanh ghi và giải quyết các vấn đề về Lock.

  • Thực hành so sánh Bare-metal (điều khiển thanh ghi trực tiếp) vs HAL API

    • Thực hành so sánh 1:1 cùng một ví dụ (LED, Timer, ngắt Interrupt, giao tiếp UART) giữa phương pháp sử dụng thư viện và phương pháp tính toán bit trực tiếp để tối đa hóa mức độ hiểu bài.

  • Đối phó với các câu hỏi thường gặp trong phỏng vấn thực tế

    • Bạn sẽ được học những kiến thức nền tảng để có thể tự tin trả lời các câu hỏi trọng tâm thường xuất hiện trong các buổi phỏng vấn thực tế về nhúng như volatile, thanh ghi BSRR, ngắt NVIC và Timer, quy trình hoạt động của MCU, v.v.


Bạn sẽ học được những nội dung này

Phần 1. Định hướng và Khái niệm cơ bản về Nhúng

  • 01강: Giới thiệu khóa học và lộ trình môi trường thực hành

  • Bài 02: Phân tích vị trí công việc phát triển SW nhúng MCU Robotics

  • Bài 03: MCU là gì? (Sự khác biệt với máy tính thông thường và 3 yếu tố chính)

  • Bài 04: Memory Map là gì? (Thao tác địa chỉ vật lý và con trỏ volatile)

Phần 2. Cơ bản về thiết bị ngoại vi (Peripherals) và điều khiển thanh ghi

  • Bài 05: Khái niệm Peripherals 1: Sự khác biệt giữa thiết bị ngoại vi và thanh ghi CPU

  • Bài 06: Khái niệm Peripherals 2: Điều khiển thanh ghi trực tiếp vs Thư viện HAL

  • Bài 07: Giải thích bitfield của thanh ghi và triển khai SW 1 (Thiết lập MODER, OTYPER, OSPEEDR)

  • Bài 08: Giải thích bit-field của thanh ghi và triển khai phần mềm 2 (Thao tác nguyên tử BSRR và trễ phần mềm)

Phần 3. Nguyên lý hoạt động của phần mềm MCU (Build, Boot, Bí mật của địa chỉ)

  • Bài 09: Theo dõi nguyên lý hoạt động của MCU SW (Quá trình Biên dịch - Liên kết - Tải lên)

  • Bài 10: Truy tìm nguyên lý hoạt động của MCU SW (Quá trình khởi động và thực thi mã main)

  • Bài 11: Bí mật của việc tự động thay thế macro và địa chỉ thanh ghi (volatile)

Phần 4. Thiết lập môi trường phát triển thực hành

  • 12강: Giới thiệu bo mạch EV: Lý do lựa chọn bo mạch NUCLEO-F446RE

  • Bài 13: Thiết lập môi trường phát triển: Công cụ tự động hóa cấu hình phần cứng STM32CubeMX

  • Bài 14: Thiết lập môi trường phát triển: Cách sử dụng môi trường phát triển tích hợp STM32CubeIDE

  • Bài 15: Thiết lập môi trường phát triển: Thiết lập môi trường build tùy chỉnh VSCode + CMake (Tùy chọn/Nâng cao)

Phần 5. Thực hành thực tế Bare-Metal (So sánh 1:1 giữa HAL và Register)

  • Bài 16: Thực hành Bare-Metal 1: Điều khiển GPIO LED (Sử dụng thư viện HAL)

  • Bài 17: Thực hành Bare-Metal 2: Trễ bằng bộ định thời phần cứng (Sử dụng HAL TIM6)

  • Bài 18: Thực hành Bare-Metal 3: Sử dụng ngắt bộ định thời (HAL TIM6 IT)

  • Bài 19: Thực hành Bare-Metal 4: Giao tiếp UART với PC và chuyển hướng printf (HAL USART2)

  • Bài 20: Điều khiển thanh ghi trực tiếp 1: Điều khiển trực tiếp GPIO LED (Thao tác nguyên tử BSRR)

  • Bài 21: Điều khiển trực tiếp thanh ghi 2: Điều khiển trực tiếp bộ đếm Timer (Triển khai TIM6 Polling)

  • Bài 22: Điều khiển thanh ghi trực tiếp 3: Điều khiển trực tiếp thanh ghi ngắt và NVIC

  • Bài 23: Điều khiển thanh ghi trực tiếp 4: Điều khiển thanh ghi UART và tính toán công thức Baud rate

Phần 6. Tùy chỉnh bản dựng VSCode và Hệ điều hành thời gian thực (RTOS)

  • Bài 24: Thực hành build CMake và CLI flashing (Thiết lập môi trường VSCode và biên dịch tốc độ cao)

  • Bài 25: Giới thiệu về RTOS (ThreadX) (Hạn chế của Bare-metal và sự ra đời của OS thời gian thực)

  • Bài 26: Thực hành triển khai mã nguồn RTOS (ThreadX) và nguyên lý hoạt động (Triển khai đa luồng và lập lịch)

Phần 7. Phân tích phần cứng dành cho kỹ sư SW hệ thống

  • Bài 27: Cách chế tạo bo mạch: Cơ bản về thiết kế PCB và gỡ lỗi phần cứng (Cách sử dụng đồng hồ vạn năng, máy hiện sóng)


Người tạo ra bài giảng này

"Những bí quyết thực tế có được từ việc lăn lộn và vấp ngã từ phần cứng cơ bản nhất cho đến phần mềm"

Xin chào, tôi là nhà phát triển robot hiện đang làm việc tại một tập đoàn toàn cầu. Trong nhiều năm làm việc trong ngành robot, tôi đã có kinh nghiệm từ phần cứng (HW) cấp thấp nhất cho đến hệ thống nhúng và cả các tầng phần mềm (SW) cấp cao.

Khóa học này không phải là một cuốn sách học thuật trình bày những lý thuyết hào nhoáng. Tôi tạo ra khóa học này để hệ thống lại những bí quyết mà mình đã tích lũy được một cách quyết liệt trong công việc thực tế, đồng thời cũng để kiếm thêm thu nhập phụ.

Nếu bạn có bất kỳ thắc mắc nào về bài giảng, hãy để lại bình luận bất cứ lúc nào. Tôi sẽ giúp bạn nhận được thật nhiều giá trị để không cảm thấy lãng phí chi phí khóa học!

Bạn có thắc mắc gì không?

  • Q. Người mới bắt đầu hoàn toàn không biết gì về lĩnh vực nhúng có thể theo học được không?

    • A. Vâng, khóa học được thiết kế để bất kỳ ai cũng có thể theo kịp nếu bạn nắm vững ngữ pháp cơ bản của ngôn ngữ C (biến, con trỏ cơ bản). Các thanh ghi phức tạp hay phép toán bit sẽ được giải thích một cách tận tình, tỉ mỉ từng bit một thông qua các hình ảnh minh họa trong tài liệu hướng dẫn.

  • Q. Khóa học này giúp ích gì cho việc phỏng vấn xin việc hay công việc thực tế?

    • A. Những ứng viên khiến người phỏng vấn cảm thấy tiếc nuối nhất là những người "chỉ biết sao chép các hàm API và vừa đủ để làm cho nó hoạt động". Sau khi hoàn thành khóa học này, bạn sẽ có thể trả lời một cách lưu loát trước người phỏng vấn về lý do tại sao phải sử dụng thanh ghi BSRR (tính nguyên tử), nguyên lý chuyển đổi địa chỉ của bản đồ bộ nhớ, v.v., từ đó tạo ấn tượng mạnh mẽ rằng "ứng viên này thực sự hiểu rõ bản chất của chip".


  • Q. Có nhất thiết phải có bo mạch thực hành (NUCLEO-F446RE) không?

    • A. Nửa đầu của bài giảng tập trung vào giải thích lý thuyết và nguyên lý, trong khi nửa sau là các bài thực hành tải chương trình xuống bo mạch thực tế. Mặc dù việc chỉ theo dõi bằng mắt cũng giúp ích rất nhiều trong việc hiểu luồng kiến thức, nhưng tôi thực sự khuyên bạn nên tự mua một bo mạch thực hành với giá khoảng 20.000 won để có thể tự tay lập trình và tận hưởng trải nghiệm bật sáng đèn LED!

Lưu ý trước khi học

Hướng dẫn môi trường thực hành

  • Máy tính: Vì đây là bài giảng tập trung vào khái niệm nên bạn có thể sử dụng bất kỳ máy tính nào như Windows, Mac, Linux.

  • Thiết bị chuẩn bị: 1 bo mạch phát triển NUCLEO-F446RE (+ cáp USB A-to-Mini B ) (Có thể dễ dàng mua trên thị trường, rất khuyến khích để vừa học vừa trực tiếp thực hành)

Kiến thức tiên quyết và lưu ý

  • Kiến thức bắt buộc:

    • Ngữ pháp cơ bản của ngôn ngữ C (biến, câu lệnh điều kiện, vòng lặp, hàm và khái niệm cơ bản về mảng một chiều/con trỏ)

    • Nếu bạn có hiểu biết cơ bản về các toán tử bit (&, |, ~, <<), việc thực hiện các bài thực hành sẽ trở nên rất dễ dàng. (Các toán tử bit sẽ được tóm tắt lại những điểm chính trong bài 7.)

  • Nội dung không cần biết cũng không sao:

    • Bạn hoàn toàn không cần biết trước những kiến thức phức tạp về mạch điện tử, xử lý tín hiệu analog hay kỹ thuật sản xuất PCB. Ở phần sau của bài giảng (Bài 27), tôi sẽ hướng dẫn chậm rãi từ những khái niệm cốt lõi nhất, được tinh chỉnh phù hợp với trình độ của một nhà phát triển phần mềm nhúng.

    • Bạn không cần phải có kinh nghiệm phát triển vi điều khiển (MCU) trước đó. Khóa học bắt đầu từ những sự khác biệt cơ bản giữa CPU và MCU, nên ngay cả những người không chuyên hoặc các nhà phát triển Web/App cũng hoàn toàn có thể hoàn thành khóa học.

Mã nguồn ví dụ thực hành (GitHub)

Tất cả mã nguồn hoàn thiện cho từng bước thực hành trong bài giảng này đều được cung cấp công khai thông qua GitHub. Hãy tận dụng chúng bất cứ khi nào bạn gặp lỗi build trong quá trình thực hành hoặc khi cần so sánh hoạt động nhé!


Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Sinh viên và người đang tìm việc muốn làm việc trong lĩnh vực phần mềm nhúng (Embedded SW) nhưng cảm thấy bản thân còn thiếu kiến thức nền tảng.

  • Một lập trình viên trẻ từng cảm thấy bế tắc về việc phần cứng thực sự hoạt động như thế nào đằng sau các thư viện.

  • Kỹ sư phần mềm am hiểu về phần cứng và muốn giao tiếp ăn ý với bộ phận thiết kế mạch điện.

  • Những ai muốn trải nghiệm thực tế môi trường VSCode tiêu chuẩn công nghiệp và nắm vững khung cơ bản của hệ điều hành thời gian thực (RTOS)

Cần biết trước khi bắt đầu?

  • Ngữ pháp cơ bản của ngôn ngữ C (biến, câu lệnh điều kiện, vòng lặp, hàm và khái niệm cơ bản về mảng một chiều/con trỏ)

Xin chào
Đây là jelly

Xác minh sự nghiệp

Xin chào, tôi là nhà phát triển robot hiện đang làm việc tại một tập đoàn đa quốc gia lớn.

Làm việc trong ngành robot nhiều năm, tôi đã được trải nghiệm mọi thứ từ phần cứng (HW) cấp thấp nhất đến nhúng (embedded) và cả phần mềm (SW) cấp cao.

 

Tôi đang hệ thống lại những bí quyết mà mình đã tích lũy được một cách quyết liệt trong công việc thực tế, và

Tôi cũng đang tạo bài giảng này để sẵn tiện kiếm thêm thu nhập phụ.

 

Nếu bạn có bất kỳ thắc mắc nào về nội dung bài giảng, hãy để lại bình luận bất cứ lúc nào nhé.

Tôi sẽ giúp bạn nhận được thật nhiều giá trị xứng đáng với chi phí của khóa học!

Thêm

Chương trình giảng dạy

Tất cả

29 bài giảng ∙ (1giờ 47phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Chưa có đủ đánh giá.
Hãy trở thành tác giả của một đánh giá giúp mọi người!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!

Ưu đãi có thời hạn, kết thúc sau 3 ngày ngày

42 ₫

29%

1.609.117 ₫