Những kiến thức nào trong C mình nên đặc biệt quan tâm để có thể lập trình vi hệ thống nhúng?

Chào mọi người.
Mình hiên đang học năm 2 và muốn đi theo hướng lập trình hệ thống nhúng ( nghiêng về phần cứng). Hiện tại mình còn rất mơ hồ về những kiến thức đã học để áp dụng trong công việc tương lai. Mình xin phép hỏi một vấn đề liên quan đến ngôn ngữ lập trình (C language). Không biết những kiến thức nào trong C mình nên đặc biệt quan tâm để có thể lập trình vi hệ thống nhúng vậy ạ? (e.g: nên học về struct, dynamic allocating memory, làm việc với file…)
Mình cảm ơn rất nhiều ạ?

đề có thể đi theo hướng lập trình hệ thông nhúng em cần học chắc các kiến thức C cơ bản, biến, mảng, con trỏ, con trỏ hảm, các kiến thức về phần memory. eg: khi khai báo một biến nó sẽ được cấp phát ở vùng nào trong memory? em có thể tham khảo cuốn lập trình C của thầy Phạm Văn Ất, học xong cuốn này kiến thức về C của em sẽ khá strong. chúc e học tốt :slight_smile:

1 Like

Vì bên sản xuất cung cấp C API
Giả sử nó không cho C mà nó chỉ cung cấp Python API thì phải dùng Python để điều khiển thiết bị.

2 Likes

Em cảm ơn lời chia sẽ của anh. Em có tìm hiểu về các kỹ năng mà kỹ sư lập trình nhúng CẦN có là master in C (expert) đặc biệt là ở phần viết driver cho hệ thống. Vậy mình chỉ cần quan tâm đến những kiến thức anh chia sẽ ở trên thôi là ổn đúng không ạ? :smiley:

Em cảm ơn thông tin này của anh ạ. Cơ mà em vẫn còn mơ hồ về API, có đọc một số tài liệu mà cũng chưa hiểu nổi được. Liệu mình có tự tạo API cho thiết bị được không ạ? ( Em xin lỗi nếu đây là câu hỏi “ngu” ạ! :smiley: )

Hi tdh_rex.

  1. Theo mình thì bạn nên kiến đồ về code để thêm kinh nghiệm.
  2. Có mình có thể tạo được. Tuy nhiên khi bạn làm với các loại khác nhau bạn sẽ hiểu phụ thuộc vào API là như thế nao.
2 Likes

đó là những thứ cơ bản đầu tiên mà em cần ( not chỉ cần nhé :smiley: ) sau khi nắm chắc những phần đó rồi thì em có thể học hỏi thêm nhiều mảng khác, sau này trong quá trình làm việc thì những kiến thức đó sẽ trở thành cái base để chúng ta dựa trên đó phát triển lên.

lập trình nhúng nói chung đa phần sẽ sử dụng C/C++, tất nhiên nếu em có thể sử dụng thêm các ngôn ngữ khác thì cũng rất tốt( Python cũng là một ngôn ngữ rất mạnh nó có thể support chúng ta trong quá trình làm việc khá nhiều) còn về API thì chúng ta hoàn toàn có thể tự tạo API, miễn sao nó có thể đáp ứng được nhu cầu sử dụng và linh hoạt khi viết driver.

1 Like

Mình có một thời gian làm nhúng, chủ yếu bên JP mình xin tả lời theo những gì mình thấy bên này (dù là rất nhỏ). Về thuật toán, cấu trúc dữ liệu, các viết code sáng sủa thì ngôn ngữ nào cũng vậy rồi.
Ngoài ra bạn nên để ý một số thứ sau:

  1. Một số cái chỉ có trong C
  • Con trỏ : con trỏ cấu trúc, con trỏ hàm (bạng trạng tháy rất hay dùng cái này)
  • Biến Volatile và Non-volatile (dịch thô thiển là biến bẩn): Mình hay thấy khi viết code tác động đến thanh ghi, phần cứng.
  • Memory Alignment : Một cấu trúc khi khai báo được sắp xếp ra sao trên bộ nhớ.
  • Memory Allocation hay cấp phát bộ nhớ
  • Các hàm thư viện: printf, scanf được cung cấp như thế nào. Hay được implement như thế nào.
  1. Có kiến thức về phần cứng
  • Nếu có thể thì cố gắng đọc được mạch, kiểu thông tin trong Datasheet của thiết bị chẳng hạn.
  • Thiết kế được thì good.

Thanks and best regards.

1 Like

Cảm ơn anh nhiều. Em sẽ cố gắng tìm hiểu những cái này ạ. :wink:

Dạ vâng. Em cảm ơn anh đã chia sẽ những thông tin trên ạ. Những cái này có lẽ sẽ định hình được hướng đi trong tương lai của em. Một lần nữa cảm ơn anh ạ. Best wishes for you!

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?