Về Lập trình nhúng

Thảo luận trong 'Liên thông & định hướng việc làm' bắt đầu bởi integer, 13 Tháng năm 2011.

  1. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    1. Giới thiệu lập trình Nhúng
    Xuất hiện từ những năm đầu thập niên 1960, hệ thống nhúng đang dần trở thành một ngành phát triển mạnh mẽ trong lĩnh vực công nghệ thông tin (CNTT), với những ứng dụng rộng rãi trong công nghiệp và đời sống.

    Theo các chuyên gia, ước tính đến năm 2010, doanh số của thị trường phần mềm cho hệ thống nhúng toàn cầu sẽ đạt cột mốc 6 tỷ đô-la Mỹ(1). Điều dự báo nói trên, cùng với sự xuất hiện ngày càng nhiều các đối tác lớn trong lĩnh vực này tại Việt Nam, đã mở ra một hướng đi mới cho thị trường phần mềm của chúng ta trong tương lai.

    Những đặc trưng của hệ thống nhúng

    Hệ thống nhúng (embedded system) được định nghĩa là một hệ thống chuyên dụng, thường có khả năng tự hành và được thiết kế tích hợp vào một hệ thống lớn hơn để thực hiện một chức năng chuyên biệt nào đó.

    Khác với các máy tính đa chức năng (multi-purposes computers), ví dụ như máy vi tính cá nhân (PC), một hệ thống nhúng thường chỉ thực hiện một hoặc một vài chức năng nhất định. Hệ thống nhúng bao gồm cả thiết bị phần cứng và phần mềm, hầu hết đều phải thỏa mãn yêu cầu hoạt động theo thời gian thực (real-time).

    Tùy theo tính chất và yêu cầu, mức độ đáp ứng của hệ thống có thể phải là rất nhanh (ví dụ như hệ thống thắng trong xe hơi hoặc điều khiển thiết bị trong nhà máy), hoặc có thể chấp nhận một mức độ chậm trễ tương đối (ví dụ như điện thoại di động, máy lạnh, ti-vi).


    [IMG]
    Ứng dụng Chíp nhúng ARM trong sản xuất MP3, điện thoại
    Video demo Touch Screen TFT LCD with MP3 Player Demo

    Video demo mini2440 FriendlyARM with WiFi (TP-Link)


    Để có thể dễ hình dung, ta xem ví dụ sau đây: một chiếc xe hơi trung bình có khoảng 70-80 chip vi xử lý (micro controller unit), mỗi bộ vi xử lý đảm nhiệm một nhiệm vụ, chẳng hạn như đóng mở cửa, điều khiển đèn tín hiệu, đo nhiệt độ trong/ngoài xe, hiển thị giao diện người dùng (dashboard), điều khiển thắng (nếu dùng hệ thống thắng điện)…

    [IMG]


    Mỗi ô tô trung bình có khoảng 70-80 chíp nhúng


    Mỗi bộ phận như thế là một hệ thống nhúng, tất cả được thiết kế tích hợp vào một hệ thống chung lớn hơn, chính là chiếc xe hơi. Một ví dụ khác gần gũi hơn với cuộc sống hằng ngày, đó là những chiếc điện thoại di động. Các chức năng như điều khiển màn hình hiển thị, máy nghe nhạc và radio, bộ cảm ứng chụp hình, kết nối với máy tính và thiết bị ngoại vi, hoặc cao cấp hơn là kết nối với hệ thống định vị toàn cầu (GPS), tất cả đều là những hệ thống nhúng được tích hợp chung vào chiếc điện thoại.

    Do tính chất chuyên biệt của hệ thống nhúng và chúng thường được sản xuất với số lượng lớn nên các nhà sản xuất thường yêu cầu phải tối ưu hóa chúng nhằm giảm thiểu kích thước và chi phí sản xuất. Những yêu cầu đó đã đưa đến những khác biệt cơ bản trong lĩnh vực viết phần mềm cho hệ thống nhúng so với các phần mềm thông thường.

    Thứ nhất, có rất nhiều hãng sản xuất bộ vi xử lý, phần cứng và phần mềm trong thị trường hệ thống nhúng và ứng với mỗi nhà sản xuất lại có nhiều dòng sản phẩm, phong phú về chủng loại và giá thành. Các nhà thiết kế thường có những sự lựa chọn rất khác nhau về kiến trúc phần cứng và phần mềm cho các hệ thống của mình. Vì vậy, khác với những lập trình viên thông thường như lập trình web hay lập trình ứng dụng (application), chỉ cần thông thạo một vài ngôn ngữ lập trình, hệ điều hành và chương trình khung (framework) là có thể làm việc có hiệu quả, một lập trình viên hệ thống nhúng phải có sự năng động và khả năng học hỏi tốt để có thể làm việc tối ưu với:

    - Những bộ vi xử lý và phần cứng khác nhau: Texas Instrument, Freescale, ARM, Intel, Motorola, Atmel, AVR, Renesas…

    - Những hệ điều hành khác nhau : QNX, uITRON, VxWorks, Windows CE/XP Embedded, Embedded Linux, Osek, Symbian…

    - Những ngôn ngữ lập trình khác nhau : C/C++, B#, Ada, Assembly, PMC, LabView, PLC…

    Thứ hai, bên cạnh sự đa dạng về kiến thức chuyên môn của lập trình viên, còn có sự đa dạng về sản phẩm đầu ra như: y tế, công nghiệp ô-tô, tự động hóa, điện tử gia dụng, viễn thông, quốc phòng… Điều này đòi hỏi những người làm việc trong ngành hệ thống nhúng phải có khả năng thích ứng cao với nhiều dạng dự án và lĩnh vực hoạt động khác nhau.

    Thứ ba, các hệ thống nhúng thường cần có sự kết hợp liền lạc giữa phần cứng và phần mềm. Do đó, lập trình cho hệ thống nhúng cũng đòi hỏi phải có sự giao tiếp và làm việc mật thiết giữa đội ngũ lập trình viên và những người thuộc các lĩnh vực khác như tự động hóa, phần cứng, cơ điện tử… Tùy vào lĩnh vực, bên cạnh những kiến thức về CNTT thông thường, trong một số trường hợp người lập trình hệ thống nhúng cần phải bổ sung thêm một số kiến thức nhất định về trình biên dịch (compiler), xử lý tín hiệu số, điện tử và sơ đồ mạch (schematics)… để có thể làm việc có hiệu quả với những nhóm khác.

    Tất cả những khác biệt đó vừa là thách thức, khiến cho chỉ có ít người có thể trụ lại lâu dài, vừa là động lực, giữ chân những người thật sự đam mê, thích khám phá và không thích sự nhàm chán.


    Phân khúc thị trường hệ thống nhúng

    Hệ thống nhúng vốn rất đa dạng và phong phú, tuy nhiên có rất ít người biết được tầm quan trọng và sự hiện hữu của chúng trong thế giới quanh ta. Từ những hệ thống phức tạp như hàng không vũ trụ, phòng thủ quân sự, máy móc tự động trong công nghiệp, đến những phương tiện di chuyển thông thường như máy bay, xe điện, xe hơi, các trang thiết bị y tế trong bệnh viện, cho tới những thiết bị truyền hình và điện thoại di động chúng ta sử dụng hằng ngày, đâu đâu cũng có sự hiện diện của hệ thống nhúng.

    Trong hơn 9 tỷ bộ vi xử lý được sản xuất hằng năm, chỉ có khoảng 150 triệu bộ (1,5%) được sử dụng cho máy vi tính cá nhân, phần còn lại (98,5%) là dành cho hệ thống nhúng (2).

    Theo một thống kê khác của BCC Research Group (4) thì đến năm 2009, tổng doanh số của thị trường hệ thống nhúng trên toàn cầu sẽ đạt khoảng 88 tỷ đô-la Mỹ, với phần cứng chiếm 78 tỷ đô-la Mỹ và phần mềm chiếm 3,5 tỷ đô-la Mỹ, phần còn lại là các bo mạch nhúng. Tốc độ tăng trưởng trung bình hằng năm (AAGR) của phần mềm nhúng hiện đang đạt mức 16%.

    Hướng phát triển cho ngành phần mềm hệ thống nhúng tại Việt Nam

    Hiện nay, lĩnh vực hệ thống nhúng tại Việt Nam mới chỉ có những bước đi chập chững ban đầu, với rất ít sản phẩm “Made in Vietnam” có thể ứng dụng vào thực tế. Công việc chủ yếu vẫn là gia công phần mềm cho nước ngoài, trong đó chiếm tỷ lệ lớn nhất là các thị trường Nhật, Mỹ và châu Âu. Rất nhiều hãng sản xuất phần mềm lớn đã và đang “đổ bộ” vào thị trường Việt Nam để tận dụng lợi thế nguồn nhân lực giá rẻ và khai thác một thị trường tiềm năng mới như IBM, CSC, Altera…

    Tuy nhiên, Việt Nam hiện đang đối đầu với một thách thức lớn, đó là “đầu vào” của nguồn nhân lực cho thị trường phần mềm nói chung và phần mềm cho hệ thống nhúng nói riêng. Ở lĩnh vực phần mềm đơn thuần, một nhân viên mới vào nghề chỉ cần từ ba đến sáu tháng huấn luyện là đã có thể làm tốt công việc được giao. Còn trong ngành gia công phần mềm cho hệ thống nhúng, một nhân viên mới cần ít nhất sáu tháng đến một năm để có thể bắt đầu làm việc có hiệu quả, và từ hai đến ba năm mới có thể làm việc thành thạo. Việc tuyển người và đào tạo đã khó, việc giữ người lại càng khó hơn.

    Đặc thù của ngành này là đòi hỏi nhân viên phải có sự kiên trì và bền bỉ để nắm bắt những kiến thức cần thiết, đồng thời cần một thời gian khá dài mới có thể thấy được thành quả. Đó là lý do tỷ lệ chuyển và nghỉ việc trong lĩnh vực này là khá cao, trung bình 12-20%. Tuy nhiên, những người gắn bó được với ngành cũng có được những phần thưởng tương xứng, tích lũy được nhiều kiến thức về phần mềm và phần cứng liên quan, cũng như thường xuyên có được sự đổi mới, tránh nhàm chán trong công việc.

    Một điểm yếu khác góp phần làm hạn chế sự phát triển của ngành gia công phần mềm tại Việt Nam chính là nhân viên thiếu khả năng giao tiếp bằng tiếng Anh và các kỹ năng mềm như khả năng thuyết trình, làm việc theo nhóm, quản lý thời gian… Như trên đã nói, các nhân viên trong ngành hệ thống nhúng cần phải có sự giao tiếp chặt chẽ với khách hàng và các nhóm làm việc nước ngoài khác.

    Tiếng Anh và các kỹ năng mềm chính là tiếng nói chung giúp mọi người có thể hiểu và làm việc với nhau hữu hiệu. Tuy nhiên, hiện nay trình độ tiếng Anh của các sinh viên mới ra trường phần lớn không đáp ứng được yêu cầu của nhà tuyển dụng, còn các kỹ năng mềm thì không được chú trọng. Bên cạnh việc đào tạo về kỹ thuật, các công ty còn cần phải huấn luyện thêm khá nhiều về tiếng Anh và các kỹ năng mềm để những nhân viên mới có thể theo kịp và đáp ứng được những yêu cầu cơ bản trong một môi trường làm việc đa văn hóa.

    Muốn phát triển ngành phần mềm hệ thống nhúng lên một tầm cao mới như có thể sản xuất, ứng dụng thực tế và xuất khẩu phần mềm nhúng của Việt Nam, điều tiên quyết là phải tập trung phát triển lĩnh vực nghiên cứu và phát triển (R&D). Hiện nay chúng ta đã có một số chương trình hợp tác với các hãng lớn ở nước ngoài như Toshiba, Panasonic, STMicroelectronics, Samsung…(5) để phát triển theo hướng này.

    Tuy nhiên, những chương trình như thế vẫn còn rất hạn chế và không có một định hướng chiến lược chung. Việt Nam cần phải đẩy mạnh hơn nữa vấn đề định hướng nghiên cứu và phát triển cho ngành hệ thống nhúng từ trong trường đại học và các trung tâm nghiên cứu, cũng như trang bị được những kiến thức tổng quát về lĩnh vực này cho những sinh viên trẻ, đáp ứng được nhu cầu ngày càng cao của nhà tuyển dụng.

    Trong tương lai, nếu Việt Nam muốn nâng cao khả năng cạnh tranh với các nước chuyên gia công phần mềm lớn khác như Trung Quốc, Ấn Độ…, cần phải tập trung giải quyết bài toán tăng cường tính hiệu quả của nguồn nhân lực, phát triển tập trung theo chiều sâu thay vì chiều rộng như hiện nay. Trình độ chuyên môn của chúng ta trong lĩnh vực phần mềm nhúng hiện nay là tương đối “chắp vá” theo kiểu chỉ đâu làm đó, thiếu sự đầu tư và chiến lược phát triển hợp lý.

    Chúng ta cần có thêm nhiều chương trình đào tạo chuyên ngành về hệ thống nhúng từ trong trường đại học và các cơ sở đào tạo chính quy. Đồng thời, mở rộng cửa đón các nhà đầu tư để học hỏi những kỹ thuật mới và chuyển giao công nghệ, nhưng quá trình này phải thực hiện một cách có chọn lọc và kiểm soát, tránh tình trạng biến Việt Nam thành “bãi đáp” tiếp nhận những công nghệ lỗi thời như ở một số ngành công nghiệp khác.

    2. Những điều bạn cần biết về lập trình Nhúng
    1. Lập trình Nhúng: Hệ thống phần mềm thực hiện một số chức năng đặc biệt có sử dụng vi xử lý
    2. Các công ty lập trình Nhúng yêu cầu bạn cần phải biết về: lập trình C/C++, Linux, Window CE.
    3. Mức lương tối thiểu của một kĩ sư lập trình Nhúng loại khá làm việc cho công ty Hàn Quốc được trả vào khoảng 500$ / 1tháng
    4. Lập trình Nhúng là một hướng đi mới đầy hứa hẹn trong một vài năm sắp tới của sinh viên ngành: CNTT, Điện tử viễn thông, Điện.


    [IMG]
    3. Một số yêu cầu tuyển dụng kỹ sư lập trình Nhúng của các công ty


    [IMG]


    [IMG]
    [IMG]
    [IMG]

    nguồn: http://www.dks.edu.vn

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí