Simulacrum, từ simulacrum Latin, là một sự bắt chước, giả mạo hoặc hư cấu. Khái niệm này được liên kết với mô phỏng, đó là hành động mô phỏng .Một...
Lộ trình học lập trình nhúng từ A tới Z
Lập trình nhúng là gì ?
Lập trình nhúng ( embedded programing ) là việc làm của một embedded developer ( lập trình viên nhúng ) có trách nhiệm viết những ứng dụng để nạp vào vi điều khiển và tinh chỉnh hoặc vi giải quyết và xử lý, để chúng điều khiển và tinh chỉnh những thành phần trong mạch điện hoạt động giải trí theo đúng nhu yếu .
Các mạch điện hoàn toàn có thể lập trình được thường được gọi là mạch nhúng .
Các hệ thống bị chi phối hoạt động bởi vi điều khiển hoặc vi xử lý gọi là hệ thống nhúng.
Bạn đang đọc: Lộ trình học lập trình nhúng từ A tới Z
Tại sao lại gọi là hệ thống nhúng?
Lấy một ví dụ cho đơn thuần. Bạn có 1 cái ly, nước và 1 gói trà. Cái ly là cố định và thắt chặt không hề biến hóa, nhưng nước và gói trà hoàn toàn có thể đổi khác. Khi tất cả chúng ta biến hóa gói trà, thì ly nước đó sẽ có vị khác nhau. Người ta gọi nôm na là “ nhúng ” .
Vì vậy một mạng lưới hệ thống có sự góp mặt của phần cứng ( cái ly ) và ứng dụng ( nước trà ) là mạng lưới hệ thống nhúng .
- Phần cứng sẽ là phần không thể thay đổi: mạch điện, vi xử lý
- Phần mềm chính là phần có thể lập trình và thay đổi theo yêu cầu của khách hàng.
Tuy nhiên phần cứng và ứng dụng sẽ có sự link ngặt nghèo với nhau, người viết ứng dụng nhúng cũng phải tuân theo những phong cách thiết kế về phần cứng .
Vì vậy nếu nói học lập trình nhúng tất cả chúng ta sẽ chia thành 2 phần :
- Embedded hardware: Thiết kế phần cứng
- Embedded software (hoặc firmware): Thiết kế chương trình cho phần cứng đó
Học lập trình nhúng ra làm cái gì?
Dạo trên những trang tuyển dụng như viettnamwork, itviec, … tất cả chúng ta sẽ thấy có nhiều công ty tuyển những kĩ sư lập trình nhúng. Công việc hầu hết cũng sẽ xoay quanh 2 thành phần đó là :
- Thiết kế phần cứng
- Lập trình phần mềm
- Làm cả 2, còn gọi là full stack embedded
Lập trình nhúng cũng chia thành nhiều Lever khác nhau, tuy không phải công ty nào cũng sử dụng những cấp chia này, nhưng những bạn hoàn toàn có thể lấy để tìm hiểu thêm .
- Fresher: Mới ra trường, ít kinh nghiệm, chủ yếu vừa học vừa làm
- Junior: Đã có kiến thức, có thể join vào dự án, code hoặc làm các thành phần trong dự án
- Senior: Có kinh nghiệm và cái nhìn tổng thể về dự án, có thể tự làm hoặc giao việc cho các thành phần khác trong team
- Poject Manager: Thêm kĩ năng quản lý dự án, quản lý thành viên để hoàn thiện dự án đúng thời hạn
- Ngoài ra còn có Product Owner (PO), Bussiness Analytics (BA): Làm việc với khách hàng, phân tích yêu cầu, thiết kế sản phẩm và đưa cho team dev thực hiện
- Tester, QC: Test và quản lý chất lượng cho sản phẩm
Ngoài ra những bạn hoàn toàn có thể tăng trưởng theo hướng IOT ( Internet of Things ), làm mảng devide IOT ( thiết bị IOT ) hoặc cả mạng lưới hệ thống thì sẽ có thêm những mức khác nữa. Mình sẽ nói chi tiết cụ thể trong bài : Lộ trình học lập trình IOT từ A tới Z
Về lương thì sao?
Đây là một trong những ngành có tiềm năng tăng trưởng vậy nên mức lương cũng tương đối cao so với những ngành khác. Mức độ cạnh tranh đối đầu cũng thấp hơn, do nhu yếu trình độ cao hơn .
Với ngành này khi ra trường những bạn hoàn toàn có thể sẽ thường có mức lương 7 – 12 tr ( thời gian mình viết bài này nhé ^ ^ ), sau đó có kinh nghiệm tay nghề sẽ lên 12 – trên 20 tr. Ngoài ra với nhu yếu nhân lực của quốc tế cũng lớn, nếu những bạn hoàn toàn có thể làm cho công ty quốc tế hoàn toàn có thể có lượng > 2 k USD / tháng là điều rất thông thường .
So sánh với những ngành IT khác như lập trình web, lập trình mobile, thì khởi đầu ngành nhúng sẽ có mức lương thấp hơn một chút ít. Tuy nhiên nếu bạn thực sự giỏi thì mức lương khủng là một điều trọn vẹn hoàn toàn có thể đạt được .
Bạn có nên chọn học lập trình nhúng ?
Để đưa ra quyết định hành động cho bất kể điều gì, tất cả chúng ta sẽ chia ra thành 2 phần khó khăn vất vả và thời cơ, sau đó đặt lên bàn cân của chính mình. Nếu cảm thấy tương thích thì mới chọn .
Khó khăn
- Khó học: Không phải ai cũng có thể học được lập trình nhúng bởi ngoài kiến thức về lập trình các bạn còn phải có kiến thức về phần cứng, phần cứng khác nhau lập trình cũng sẽ hơi khác 1 chút.
- Thời gian đào tạo lâu: Để học được tất cả các kiến thức đó cần 1 khoảng thời gian nhất định thường là 1, 2 năm nếu chăm chỉ. Khi học nghành này các bạn quên ngay cái câu chuyện học vài ba tháng là có thể đi làm nhé
- Tốn tiền cho phần cứng: Học cái này các bạn phải mua sắm phần cứng, phải mua cái ly thì mới có nước đổ vào được chứ. Ngoài ra các loại cảm biến và thiết bị khác cũng sẽ khá tốn tiền. Vậy nên nếu bạn quá khó khăn về kinh tế cũng đừng nên học ngành này
Cơ hội
- Lương khá cao: Lương mình cũng đã nói rồi đó, nếu bạn làm việc tốt thì lương không phải là vấn đề bạn cần suy nghĩ
- Khả năng khởi nghiệp cao: Không như các nghề khác chỉ là một mắt xích trong công ty, với nghề này các bạn có thể chế tạo sản phẩm phục vụ nhu cầu cần thiết và bán chúng, tạo ra nhiều giá trị cho xã hội
- Xu thế phát triển của xã hội: Các máy móc thông minh đang dần dần khẳng định vị thế của mình, thế giới luôn luôn cần sự đổi mới, và bạn là một trong những người đi đầu trong việc đổi mới đó. Nghề của bạn sẽ không bao giờ bị outdate do thị trường không cần sử dụng nữa
Lời khuyên của mình
Nếu những bạn thực sự có đam mê thì mới học lập trình nhúng, vì thời hạn bỏ ra là khá nhiều. Mình đã tận mắt chứng kiến rất nhiều người bỏ ngang khi đang học, thâm chí sau khi đi làm, để kiếm một việc làm lương cao hơn .
Nhưng bạn nên hiểu, thành bại do con người, do chính bản thân bạn. Vậy nên nếu bạn cảm thấy tương thích và hoàn toàn có thể đi đường dài thì mới nên chọn, trên con đường này bạn vẫn phải liên tục học tập không ngừng nghỉ, đừng chọn vì lương, đừng chọn vì xu thế, hãy chọn vì bản thân mình .
Lộ trình để trở thành Embedded Hardware developer ( Kĩ sư phong cách thiết kế phần cứng )
Roadmap
Các kiến thức và kỹ năng cần học :
- Kiến thức điện cơ bản
Dòng điện là gì
Các công thức tính toán cơ bản
Các định luật cơ bản - Linh kiện học
Các loại linh kiện và chức năng của chung
Cách đọc datasheet của linh kiện
Các loại linh kiện thường sử dụng hiện nay - Mạch điện
Các mạch điện đơn giản
Mạch nguồn
Các mạch Opamp
Cách mạch công xuất, cách ly - Sử dụng các công cụ
Công cụ đo đạc.: đồng hồ, oscillocope
Công cụ hàn mạch: mỏ hàn, máy khò, thiếc,…
Công cụ mô phỏng: proteus… - Thiết kế mạch in
Thiết kế mạch nguyên lý
Vẽ mạch in
Làm chủ 1 phần mềm: Altium, kicad…
Các công cụ cho việc sản xuất mạch in - Sản xuất mạch in
Các phương pháp chế tạo mạch in: cảm quang, in nhiệt, cắt khắc cnc…
Phương pháp sx mạch: SMT, Nhúng,….
Mục tiêu
- Thiết kế được mạch nguyên lý theo yêu cầu
- Vẽ được mạch in đúng chất lượng
- Đo đạc, phân tích mạch điện
- Sản xuất mạch điên thực tế
Lộ trình để trở thành Embedded Software ( firmware ) developer ( Kĩ sư tăng trưởng ứng dụng )
Road map
Các kỹ năng và kiến thức cần học :
- Ngôn ngữ lập trình
Ngôn ngữ máy là gì
Ngôn ngữ ASM
Ngôn ngữ C
Giải các bài toán lập trình đơn giản - Cấu trúc dữ liệu và giải thuật
Các kiểu dữ liệu
Các giải thuật
Xử lý bài toán lập trình - Kiến trúc vi điều khiển
Kiến trúc của vi xử lý và vi điều khiển
Bộ nhớ
Ngoại vi - Kiến trúc một chương trình nhúng
Các lớp trong lập trình nhúng
Cách biên dịch chương trình nhúng
Kiến thức về IDE và cách sử dụng - Lập trình điều khiển thanh ghi
Thực chất lập trình thanh ghi là gì?
Cách đọc reference manual
Cách tạo các file định nghĩa cho vđk
Cách thay đổi giá trị của thanh ghi
Lập trình với các ngoại vi: ADC, I2C, SPI, UART, ….
Làm 1 số bài toán cụ thể - Lập trình driver
Cách đọc datasheet linh kiện
Viết thư viện cho linh kiện - Lập trình vi điều khiển với thư viện
Tại sao chúng ta nên sử dụng thư viện
Chọn công cụ và thư viện
Lập trình các ứng dụng cụ thể
VD: Lập trình STM32 từ A tới Z với thư viện HAL - Hệ điều hành thời gian thực RTOS
- Hệ điều hành linux
Mục tiêu
- Lập trình nhúng cho bất kì dòng vi điều khiển nào
- Lập trình được driver cho bất kì loại cảm biến nào
- Hiểu về các lớp trong lập trình
- Sử dụng thành thạo các thư viện của hãng
- Làm được các dự án thực tế
Lời khuyên cho những bạn học lập trình nhúng
Nhìn rõ lộ trình, chia nhỏ mục tiêu
Để mở màn học về bất kỳ điều gì những bạn hãy tạo cho mình 1 lộ trình và nỗ lực đạt được những target trong lộ trình đó. Việc này là rất thiết yếu vì những bạn sẽ xác định được bản thân đang ở đâu, cần đi đâu, cần học những gì để đạt được tiềm năng lớn của bản thân .
Đó cũng là một kĩ năng quan trọng trong bất kỳ việc nào sau này, giống như việc mình viết bài này vậy. Mình đã tạo ra 1 lộ trình để cho bạn đọc biết mình đang ở đâu và làm gì. Hãy nỗ lực tạo cho bản thân mình 1 lộ trình như vậy nhé .
Nên nhớ: Thành công lớn là tập hợp của rất nhiều thành công nhỏ
Đam mê dẫn lối, kỉ luật đồng hành
Đam mê chưa khi nào là đủ, hầu hết những người mình gặp khi hỏi đều nói mình có đam mê với ngành này. Thế nhưng không phải ai cũng thực sự thành công xuất sắc. Vậy tuyệt kỹ để thành công xuất sắc là gì ?
Đó chính là sự kỉ luật, kỉ luật trong cách học tập, kỉ luật trong cách sống, kỉ luậ với bản thân mình, kỉ luật chính là sức mạnh tạo nên sự thành công xuất sắc. Không phải ngẫu nhiên mà quân đội lại quan trọng kỉ luật đến vậy .
Để đạt được mục tiêu thì kỉ luật chính là chìa khóa, còn đam mê chỉ là ngọn hải đăng, chỉ ra nơi bạn muốn đến. Chỉ nhìn và mơ mộng mà không đi thì rốt cuộc bạn cũng sẽ chỉ dậm chân tại chỗ mà thôi .
Làm dự án, cách nhanh nhất để học
Đã khi nào bạn nghĩ mình học để làm gì không ? Đơn giản bạn chưa biết được kỹ năng và kiến thức mình ứng dụng vào thực tiễn như thế nào. Cũng như việc người ta nói rằng Toán chỉ nên học hết cấp 2, vì những kỹ năng và kiến thức như đạo hàm, tích phân, vi phân đâu có vận dụng gì trong đời sống .
Tương tự như vậy, nếu những bạn học lạp trình nhúng một cách hàn lâm và thiếu tính thực tiễn, bạn sẽ đi rất chậm. Tốt nhất đó là vận dụng nó vào một bài toán đơn cử .
Mình lấy ví dụ : Mẹ bạn làm nông, suốt ngày phải thức khuya dậy sớm để đi tưới nước, bạn làm 1 mạng lưới hệ thống tưới hẹn giờ cho mẹ. Khi làm dự án Bất Động Sản trong thực tiễn, bạn sẽ vấp phải những khó khăn vất vả mà bạn không khi nào được học trên trường, bạn xử lý được những yếu tố đó chính là kiến thức và kỹ năng, kinh nghiệm tay nghề của bạn mà không ai hoàn toàn có thể truyền đạt được, đó cũng là cách thao tác sau này của bạn tại những công ty .
Nên nhớ : Học song song với hành
Thể hiện bản thân mình
Mình biết những bạn học lập trình thường hướng về trong, ngại bộc lộ. Thế nhưng nếu bạn giỏi mà cả quốc tế đều không biết bạn giỏi thì làm thế nào những thời cơ tốt đến với bạn được .
Cũng như việc mình viết Blog này, nó chả đem lại thu nhập gì cho bản thân, còn mất thêm tiền. Thế nhưng nó là nơi mình bộc lộ bản thân, từ đó thời cơ sẽ đến thuận tiện hơn .
Nếu là được mẫu sản phẩm tốt hãy không ngừng nói về nó, nếu bạn học được điều hay, hãy san sẻ nó tới nhiều người, hãy đi thi những cuộc thi về khoa học kĩ thuật, những hoạt động giải trí KHKT. Từ đó nhiều người biết đến bạn, thời cơ sẽ tìm đến bạn .
Kết
Học lập trình nhúng hoàn toàn có thể rất nguy hiểm, thế nhưng nếu bạn có trong mình niềm đam mê và không từ bỏ. Sớm muộn gì bạn cũng sẽ gặt hái được những thành công xuất sắc đơn cử. Mình viết bài này mong ước san sẻ cho bạn cái nhìn tổng quan về ngành và nghề, nếu cảm thấy có ích, hãy chia sẽ nó với những người xung quanh .
Đừng quên gia nhập Hội Anh Em Nghiện Lập trình để giao lưu và học hỏi nhé ! ! !
5/5 – ( 8 bầu chọn )
Source: https://vh2.com.vn
Category : Tin Học