Thông báo

Collapse
No announcement yet.

Tại sao các công ty Việt Nam vẫn sử dụng PIC - AVR

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Ở nơi mà có thể mua được mọi linh kiện dễ dàng như ta đi chợ mua rau ... thì vẫn cần phải lựa cơm gắp mắm đó. Thằng Tàu Khựa là 1 ví dụ , càng dễ sản xuất thì càng có nhiều cạnh tranh ... càng nhiều cạnh tranh thì càng cần phải chọn giải pháp để có giá, mẫu mã , dịch vụ .v..v hấp dẫn khách hàng. Hoặc không phải là những hàng đặc biệt ... chẳng giống ai , chẳng ai làm thì mình làm ===> sẽ có đường riêng mà đi thôi !
    Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

    Comment


    • Nguyên văn bởi picvendor Xem bài viết
      Bây giờ dạy cho sinh viên lập trình MCU nên ưu tiên dòng chip nào? Tôi thấy có thể chiến với PIC, AVR theo kit Arduino, hoặc ARM nếu dòng nào có đủ thư viện và cộng đồng lớn. Tuy nhiên thu hẹp danh sách thì tôi chưa đánh giá được.
      Với lập trình thì tôi nghĩ nên cho sinh viên bắt đầu với Pascal hoặc C (ở mức lập trình cấu trúc). Pascal rất tốt để tiếp cận và hiểu về cấu trúc. C cũng rất cơ bản và giờ vẫn được sử dụng phổ biến, nhất là trong lập trình phần cứng và lập trình cấp thấp.

      Với vi điều khiển thì có lẽ nên bắt đầu với AT89S52, dùng asembly. Cần cho sinh viên tiếp cận tốt, hiểu về đối tượng chứ không phải để làm những thứ hoành tráng.
      Sau đó có thể dùng các dòng chip khác và ngôn ngữ lập trình C, C++ (vẫn là 8-bit), khi này sinh viên có thể tự tiếp cận sử dụng chứ không phải dậy nữa. Có thể là PIC, AVR, STM8, các mcu lõi 8051 đời mới... nhưng cá nhân tôi thấy không nên dùng AVR 8-bit vì nhiều năm nay ở Việt Nam gần như không có chip mới (ATmega8 thì dùng được, mạnh và rẻ).

      Tôi đang nói đến việc tiếp cận. Còn dùng dòng nào sau đó để làm việc thì có thể sẽ do sinh viên quyết định, và còn phụ thuộc nhiều yếu tố. Nếu có thể thì cho sinh viên tự do chọn chip, giảng viên sẽ là người hướng dẫn sinh viên học, giúp gỡ lỗi và giúp đỡ thuật toán.

      Comment


      • Các dòng ARM-Cortex hiện nay chủ yếu dùng cho phân khúc tầm trung và cao. Chứ các dòng phân khúc tầm thấp thì vi điều khiển 8 bit PIC và AVR vẫn là sự lựa chọn tốt nhất.

        Mình không biết ở đây có ai lập trình dòng xmega của atmel hay không. Chứ dòng này có rẩt nhiều lỗi và nếu bạn có tham gia diễn đàn avrfreaks.net thì có thế thấy họ chán nản với dòng xmega như thế nào AVR Freaks :: View topic - Why AVRFreaks members do not like XMEGA. Atmel dường như không còn tập trung phát triển cho dòng này nữa, có lẽ vì vậy họ mới sản xuất các chip arm cortex.

        ARM đang phát triển mạnh mẽ một cách chóng mặt, đến nỗi Intel còn tuyên bố sản xuất chip ARM nữa mà. Khi thế giới ngày càng phát triển, thì chả ai muốn phụ thuộc vào một nhà sản xuất cả. PIC32 là một dòng chip mạnh nhưng khó lòng mà cạnh tranh được được với một đội quân ARM.

        Comment


        • Nguyên văn bởi Elenor Xem bài viết
          Tuy nhiên, gia su bạn sống ở nơi mà bạn có thể mua dc mọi loại Lkdt một cách dễ dàng, yêu cầu ve chất lượng cao hơn thì bạn có giữ nguyên quan điểm thiết kế này hay không?
          Quan điểm thiết kế của mình sẽ không thay đổi, cho dù ở đâu hay trong hoàn cảnh nào. Mình chỉ thay đổi quan điểm khi có nhận thức mới khác biệt và đủ mạnh.

          Mình thiết kế giải pháp đó chính là vì yêu cầu ổn định cao (sử dụng ở chỗ cũng hơi nhạy cảm), hiệu suất cao và đặc biệt là drop-out nhỏ (kỳ vọng 0.5V ở 3A, đạt 0.8V).
          Nếu có thể mua được linh kiện dễ dàng, đảm bảo thì có thể mình sẽ dùng một con Buck-Regulator, khỏi phải tốn công thiết kế nguyên lý khác. Thực sự thì mình đã định dùng 1 con của TI, sau đó thôi vì nó nhỏ, cần một khoảng mạch in cũng không nhỏ để nó tản nhiệt, nguồn hàng không tin cậy lắm, và cũng không rẻ bằng giải pháp mình dùng.
          Ngoài ra, khi mình kiểm soát nó bằng mcu, mình có thể thêm các chế độ Shutdown-AutoRestart khi điện áp đầu ra ngoại dải, thêm các chế độ khởi động mềm, thêm giới hạn Max-Duty-Cycle để hạn chế "rung" phản hồi. Và đằng nào trên mạch của mình cũng cần mcu để tiện báo điện áp acquy, giới hạn vùng điện áp hoạt động, hạn chế "sao chép" thiết kế.

          Comment


          • Nguyên văn bởi picvendor Xem bài viết
            Bây giờ dạy cho sinh viên lập trình MCU nên ưu tiên dòng chip nào? Tôi thấy có thể chiến với PIC, AVR theo kit Arduino, hoặc ARM nếu dòng nào có đủ thư viện và cộng đồng lớn. Tuy nhiên thu hẹp danh sách thì tôi chưa đánh giá được.
            Đây là một số thứ mình quan sát được. Lưu ý đây chỉ dựa trên công việc ở một vài cty nước ngoài tại Việt Nam, hay công ty Việt Nam làm việc với khách hàng nước ngoài thôi.
            - Trong 2 tuần, mỗi ngày học 1 buổi, một nhóm "các em tốt nghiệp cao đẳng, mới chỉ được học tẹo (vẫn coi như chưa biết) lập trình C ở trường, không biết MCU" có thể lập trình cho robot chạy về đích theo ma trận kẻ vạch trắng sau khi được training cơ bản về C và MCU 16 bit
            - Trong 3 tuần, các bạn "tốt nghiệp đại học, biết một ít về C, về MCU chưa biết gì" đã có thể sử dụng phần lớn các ngoại vi (Interrupt, GPIO, ADC, I2C, SPI, PWM...) và RTOS trên một platform 32 bit

            => Để dùng mức cơ bản, mình thấy không có platform nào dễ hơn nhiều so với các platform khác cả. Ở mức cơ bản thì không dùng assembly cũng vẫn làm được các tác vụ.

            - Tuy nhiên, để viết được code phức tạp hơn (ví dụ như cái FatFS mình nói ở trước (chạy trên cả 8bit, 16bit, 32bit)) thì cần nhiều thứ hơn. Những cái đó có thể như:
            + Kiến thức tốt về C (Học và làm hết bài tập mấy phần đầu quyển "The C programming language" của Ritchie and Kernighan)
            + Harvard/Von Neumann architecture, address space
            + Boot sequence, start up code => Ở đây mới dùng Assembly
            + Memory allocation (stack, heap, bss, data, biến loại nào được đặt ở vung nhớ nào...)
            + Endianess
            + Memory alignment, padding...
            + Application binary interface
            + Interrupt: latency, tail chaining, nested...
            + Re-entrance function
            + Position independent code
            + Compilation, linking process
            + RTOS
            + Một số thứ không liên quan đến MCU như viết code bằng cách phân thành lớp, kiểm tra các điều kiện như đầu vào của hàm có hợp lệ không... Túm lại là code trong sáng, an toàn, dễ maintain chứ không phải chỉ cần chạy là được.

            => Lựa chọn loại platform có thể dễ dàng trải nghiệm nhiều kỹ thuật nhất

            - Nên chọn loại có bán sẵn các dev board rẻ tiền cỡ, cỡ ít hơn 500k (loại mạch rất nhỏ thôi vì còn dùng vào việc khác phía dưới)

            - Không nên đặt nặng vấn đề làm mạch, vì mình nghĩ rằng làm mạch là thuộc môn học khác, không phải môn MCU. Không cần chọn con chip để có thể làm mạch rẻ tiền ở VN vì nếu cần làm thêm mạch (để học) thì sẽ là làm mother board cho cái dev board nhỏ trên.

            - Nên chọn loại có debugger rẻ tiền, gằn trên dev board luôn thì tốt. Nên hướng dẫn sinh viên cách sử dụng debugger một cách hiệu quả.

            - Tất cả các hãng đều có library đủ dùng cho chip của họ nên không cần đặt các cai library này lên bàn cân

            Hy vọng bạn có thể quyết định là con MCU của bạn sẽ là thể loại 8, 16 hay 32 bit trước khi ta thảo luận để chọn con cụ thể

            Comment


            • Sao mà lắm chú, lắm bác bảo thủ đến khó đở!
              --> Giờ không nghiên cứu ARM & Lập trình nhúng---> Sẽ có ngày ko xa, ôm tức tưởi mà chết.
              Đáng thương!

              Các Doanh Nghiệp, các CTY Việt Nam không thể nào phát triển mạnh mẽ mà chỉ dựa vào MCU 8bit, với cách lập trình cũ quắc và đã tồn tại quá lâu đời.
              Phải thay đổi và cập nhật công nghệ mới một cách quyết liệt, tất cả chúng ta cần phải có con mắt sáng suốt: Áp dụng mạnh mẽ- nhanh chóng & kịp thời sức mạnh của công nghệ hiện đại mà thế giới mang lại.

              Chúng ta phải biết nhìn nhận bảo thủ và sự ngu dốt ẩn tàng trong mỗi con người chúng ta. Để mở con mắt to đầy sáng suốt,...có như thế mới mong Công Nghệ VN phát triển mạnh mẽ và ngang tầm được.

              Nói gì thì nói, ai chứng minh được: Dùng MCU 8 bit đã tồn tại lâu đời lạc hậu, đem nghiên cứu.....có thể nào tạo nên những sản phẩm Smart thông minh, uyển chuyển được không!?
              Last edited by eKhanhHoa; 12-12-2013, 09:57.

              Comment


              • Nguyên văn bởi eKhanhHoa Xem bài viết
                Sao mà lắm chú, lắm bác bảo thủ đến khó đở!
                --> Giờ không nghiên cứu ARM & Lập trình nhúng---> Sẽ có ngày ko xa, ôm tức tưởi mà chết.
                Đáng thương!

                Các Doanh Nghiệp, các CTY Việt Nam không thể nào phát triển mạnh mẽ mà chỉ dựa vào MCU 8bit, với cách lập trình cũ quắc và đã tồn tại quá lâu đời.
                Phải thay đổi và cập nhật công nghệ mới một cách quyết liệt, tất cả chúng ta cần phải có con mắt sáng suốt: Áp dụng mạnh mẽ- nhanh chóng & kịp thời sức mạnh của công nghệ hiện đại mà thế giới mang lại.

                Chúng ta phải biết nhìn nhận bảo thủ và sự ngu dốt ẩn tàng trong mỗi con người chúng ta. Để mở con mắt to đầy sáng suốt,...có như thế mới mong Công Nghệ VN phát triển mạnh mẽ và ngang tầm được.

                Nói gì thì nói, ai chứng minh được: Dùng MCU 8 bit đã tồn tại lâu đời lạc hậu, đem nghiên cứu.....có thể nào tạo nên những sản phẩm Smart thông minh, uyển chuyển được không!?
                * Chuyển đổi từ 8bit lên 32bit, theo các hãng sx chip 32bit mất trung bình 30 ngày, tương đương với thời gian chuyển đổi giữa các họ 8bit với nhau. Ví dụ: chuyển từ 89xx sang AVR8 hay PIC8. =====> không thể chết tức tưởi được.

                * Hiện tại Các Doanh Nghiệp, các CTY Việt Nam đều có thể làm được sản phẩm sử dụng mcu từ 8bit, 16bit, 32bit cả. Chỉ có điều họ phải chọn một điểm cân bằng tối ưu giữa các giá trị lợi ích. Cũng nhắc lại MCU 32 bit cũng không mới.
                VD: Atmel có MCU ARM từ năm 1998, và năm 1999-2000 (mười mấy năm rồi không còn nhớ chính xác nữa) ITX đã có cơ hội vọc dòng ARM7TDMI này, tin chắc với các CTY Việt Nam họ còn tiếp cận sớm hơn.

                * Các hãng sx chip chứng minh được, hãy đọc các Application Notes của họ.
                Từ chối trách nhiệm:
                Mọi thông tin từ ITX cung cấp với hi vọng nó có ích và không đi kèm với bất kì sự bảo đảm nào.
                Blog: http://mritx.blogspot.com

                Comment


                • Nguyên văn bởi eKhanhHoa Xem bài viết
                  Sao mà lắm chú, lắm bác bảo thủ đến khó đở!
                  --> Giờ không nghiên cứu ARM & Lập trình nhúng---> Sẽ có ngày ko xa, ôm tức tưởi mà chết.
                  Đáng thương!

                  Các Doanh Nghiệp, các CTY Việt Nam không thể nào phát triển mạnh mẽ mà chỉ dựa vào MCU 8bit, với cách lập trình cũ quắc và đã tồn tại quá lâu đời.
                  Phải thay đổi và cập nhật công nghệ mới một cách quyết liệt, tất cả chúng ta cần phải có con mắt sáng suốt: Áp dụng mạnh mẽ- nhanh chóng & kịp thời sức mạnh của công nghệ hiện đại mà thế giới mang lại.

                  Chúng ta phải biết nhìn nhận bảo thủ và sự ngu dốt ẩn tàng trong mỗi con người chúng ta. Để mở con mắt to đầy sáng suốt,...có như thế mới mong Công Nghệ VN phát triển mạnh mẽ và ngang tầm được.

                  Nói gì thì nói, ai chứng minh được: Dùng MCU 8 bit đã tồn tại lâu đời lạc hậu, đem nghiên cứu.....có thể nào tạo nên những sản phẩm Smart thông minh, uyển chuyển được không!?
                  Nó thể hiện 2 điều:
                  1. Bạn không nghe, không nghĩ
                  2. Bạn chả biết gì cả

                  Comment


                  • Nguyên văn bởi eKhanhHoa Xem bài viết
                    Sao mà lắm chú, lắm bác bảo thủ đến khó đở!
                    --> Giờ không nghiên cứu ARM & Lập trình nhúng---> Sẽ có ngày ko xa, ôm tức tưởi mà chết.
                    Đáng thương!

                    Các Doanh Nghiệp, các CTY Việt Nam không thể nào phát triển mạnh mẽ mà chỉ dựa vào MCU 8bit, với cách lập trình cũ quắc và đã tồn tại quá lâu đời.
                    Phải thay đổi và cập nhật công nghệ mới một cách quyết liệt, tất cả chúng ta cần phải có con mắt sáng suốt: Áp dụng mạnh mẽ- nhanh chóng & kịp thời sức mạnh của công nghệ hiện đại mà thế giới mang lại.

                    Chúng ta phải biết nhìn nhận bảo thủ và sự ngu dốt ẩn tàng trong mỗi con người chúng ta. Để mở con mắt to đầy sáng suốt,...có như thế mới mong Công Nghệ VN phát triển mạnh mẽ và ngang tầm được.

                    Nói gì thì nói, ai chứng minh được: Dùng MCU 8 bit đã tồn tại lâu đời lạc hậu, đem nghiên cứu.....có thể nào tạo nên những sản phẩm Smart thông minh, uyển chuyển được không!?
                    Ông Phi này không đọc à và viết mấy cái này .

                    --- Các công ty người ta đã tiếp cận 32 bit với ARM từ những năm 2 nghìn lẻ mấy rồi ông ạ . Dốt lập trình như tôi cũng mò mẫm mấy con chip của qualcomm từ 2006 rồi .
                    Chứ chẳng có cái cty nào lạc hậu như ông nghĩ đâu .

                    Còn làm theo kiểu đặt hàng ( phụ thuộc rất nhiều yếu tố ) nên chọn con chip nào , dòng chip nào để có được lợi thế người ta sẽ chọn, sẽ làm để đạt hiệu quả và thu về giá trị kinh tế cao... Chứ không phải người ta mù hay lạc hậu !

                    ARM , nhúng nhéo thì cũng có là cái gì ghê gớm đâu , quá tầm thường ... nếu đã hiểu nó rồi thì cũng như ta lập trình để điều khiển con led vậy ! ( Đừng có nghĩ chỉ lập trình mỗi con led nhấp nháy nhé ! ).
                    Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                    Comment


                    • Nguyên văn bởi Elenor Xem bài viết
                      Đây là một số thứ mình quan sát được. Lưu ý đây chỉ dựa trên công việc ở một vài cty nước ngoài tại Việt Nam, hay công ty Việt Nam làm việc với khách hàng nước ngoài thôi.
                      - Trong 2 tuần, mỗi ngày học 1 buổi, một nhóm "các em tốt nghiệp cao đẳng, mới chỉ được học tẹo (vẫn coi như chưa biết) lập trình C ở trường, không biết MCU" có thể lập trình cho robot chạy về đích theo ma trận kẻ vạch trắng sau khi được training cơ bản về C và MCU 16 bit
                      - Trong 3 tuần, các bạn "tốt nghiệp đại học, biết một ít về C, về MCU chưa biết gì" đã có thể sử dụng phần lớn các ngoại vi (Interrupt, GPIO, ADC, I2C, SPI, PWM...) và RTOS trên một platform 32 bit

                      => Để dùng mức cơ bản, mình thấy không có platform nào dễ hơn nhiều so với các platform khác cả. Ở mức cơ bản thì không dùng assembly cũng vẫn làm được các tác vụ.

                      - Tuy nhiên, để viết được code phức tạp hơn (ví dụ như cái FatFS mình nói ở trước (chạy trên cả 8bit, 16bit, 32bit)) thì cần nhiều thứ hơn. Những cái đó có thể như:
                      + Kiến thức tốt về C (Học và làm hết bài tập mấy phần đầu quyển "The C programming language" của Ritchie and Kernighan)
                      + Harvard/Von Neumann architecture, address space
                      + Boot sequence, start up code => Ở đây mới dùng Assembly
                      + Memory allocation (stack, heap, bss, data, biến loại nào được đặt ở vung nhớ nào...)
                      + Endianess
                      + Memory alignment, padding...
                      + Application binary interface
                      + Interrupt: latency, tail chaining, nested...
                      + Re-entrance function
                      + Position independent code
                      + Compilation, linking process
                      + RTOS
                      + Một số thứ không liên quan đến MCU như viết code bằng cách phân thành lớp, kiểm tra các điều kiện như đầu vào của hàm có hợp lệ không... Túm lại là code trong sáng, an toàn, dễ maintain chứ không phải chỉ cần chạy là được.

                      => Lựa chọn loại platform có thể dễ dàng trải nghiệm nhiều kỹ thuật nhất

                      - Nên chọn loại có bán sẵn các dev board rẻ tiền cỡ, cỡ ít hơn 500k (loại mạch rất nhỏ thôi vì còn dùng vào việc khác phía dưới)

                      - Không nên đặt nặng vấn đề làm mạch, vì mình nghĩ rằng làm mạch là thuộc môn học khác, không phải môn MCU. Không cần chọn con chip để có thể làm mạch rẻ tiền ở VN vì nếu cần làm thêm mạch (để học) thì sẽ là làm mother board cho cái dev board nhỏ trên.

                      - Nên chọn loại có debugger rẻ tiền, gằn trên dev board luôn thì tốt. Nên hướng dẫn sinh viên cách sử dụng debugger một cách hiệu quả.

                      - Tất cả các hãng đều có library đủ dùng cho chip của họ nên không cần đặt các cai library này lên bàn cân

                      Hy vọng bạn có thể quyết định là con MCU của bạn sẽ là thể loại 8, 16 hay 32 bit trước khi ta thảo luận để chọn con cụ thể
                      Cảm ơn các bác đã cho ý kiến. Xét về mục đích chính của dạy học, tôi cũng đồng ý với Knowmore và Elenor là cần cho SV học những cái cơ bản và trong sáng để nắm được các thành phần và cách lập trình cho MCU. Học luôn trên dev board và có debugger hỗ trợ là hợp lý, bởi giá tiền các thiết bị đó không đắt nữa, tiết kiệm khá nhiều thời gian so với việc dạy làm mạch.

                      Chọn dòng chip cấp thấp (8 bit) hay cao hơn hóa ra lại là câu hỏi lớn hơn. Giả sử chọn chip 8 bit, dạy cách thức lập trình và sử dụng chức năng ngoại vi cơ bản, thì kể ra chẳng có tiến bộ mấy so với khoảng chục năm trước khi bọn tôi học vi điều khiển ở trường. Kể ra thì cũng có khác đôi chút: SV sẽ không phải mò mẫm từ mạch phần cứng, tài liệu thì có nhiều hơn, bây giờ debugger có sẵn hơn trước. Vậy kể ra tôi sẽ dạy cho sinh viên kiến thức bị tụt hậu thêm mười năm so với thế giới (chưa tính sự tụt hậu đã có sẵn hồi đầu những năm 2000)! Những kỹ năng lập trình đòi hỏi tính toán và tối ưu code như bác Elenor viết, kể ra khó có nơi nào dạy trong trường được, chỉ khi bắt tay làm những cái phức tạp người ta mới tự học thêm.

                      Trong vòng 1 thập kỷ qua, ngành vi mạch phần cứng chắc tiến bộ rất nhanh, tôi ít để ý mà cũng thấy thế giới tập trung vào việc tăng sức mạnh cho chip không đơn thuần là tăng thêm tốc độ hay dung lượng bộ nhớ, mà ở chỗ tích hợp nhiều công cụ mới vào con chip (chỉ nói MCU thôi, tôi không có kiến thức về các loại SoC), thay đổi kiến trúc chip và tập lệnh để tính toán hiệu quả hơn. Như ở đây ta tranh luận về 8 bit và 32 bit, rõ ràng xu thế phát triển trên thế giới là rất nhanh, cách tiếp cận chuyển đổi kiểu như từ lập trình dòng lệnh sang dạng kéo thả các thư viện vào chương trình. Dạy lại kiến thức như kiểu mình đã tiếp cận trước đây tôi thấy hơi lãng phí.

                      Tuy nhiên nếu bắt đầu bằng chip 32 bit thì gặp vấn đề về tính chấp nhận của thị trường lao động, như mấy trang trước ta đã bàn, nhiều sản phẩm chúng ta làm ở Việt Nam, các công ty muốn sử dụng chip 8 bit nhiều hơn (tuy họ vẫn có năng lực làm với chip cấp cao). Vậy sinh viên đào tạo ra nếu không master về chip 8 bit mà cứ nói với chủ là "em thấy làm bằng chip 32 bit nhanh gọn hơn chứ" thì chắc sớm cuốn gói ra đi.

                      Nhưng mà không lẽ ta ngồi ở đây than vãn thời thế khó khăn, dù sao cũng cần bắt tay vào can thiệp. Thôi thì bây giờ cứ đi theo hướng chọn chip 32 bit, đổi mới tư duy SV sớm chút nào hay chút đó. Tôi cũng có dự tính là dạy luôn embedded OS ngay từ đầu, sau khi SV được dạy về các thiết bị ngoại vi cơ bản của chip. Các bác cho ý kiến thêm nhé! Thanks

                      Comment


                      • Nhân nói về việc dạy SV lập trình vi điều khiển, hơi off-topic một chút, tôi vừa post xong thấy ngay một ví dụ đáng suy nghĩ:
                        http://www.dientuvietnam.net/forums/...06/#post819033

                        Nhận xét đầu tiên là bạn này (chắc đang học) không biết cách trình bày một vấn đề. Bàn về lập trình thuật toán, mà mô hình thuật toán không đưa ra, ý đồ triển khai ra phần cứng như thế nào không nói, đùng cái quăng ra đoạn code C nhìn không hơn lập trình cấp thấp mấy, thế thì không lẽ người ta lại phải dò lại để biết thuật toán của bạn thế nào!

                        Nhận xét thứ hai, tôi cảm giác đây là thất bại chung trong cách ta đào tạo sinh viên học về lập trình vi xử lý. Họ được dạy tập trung về coding bằng một ngôn ngữ lập trình nào đó, đến mức nghĩ rằng trình bày vấn đề bằng ngôn ngữ đó thì đủ "universal" rồi, ai cũng phải hiểu. Kết quả là đẻ ra một dạng coder được người ta ưu ái gọi là "nerd", làm việc thì chẳng mấy ai hợp tác được.

                        Comment


                        • Nguyên văn bởi picvendor Xem bài viết
                          Cảm ơn các bác đã cho ý kiến. Xét về mục đích chính của dạy học, tôi cũng đồng ý với Knowmore và Elenor là cần cho SV học những cái cơ bản và trong sáng để nắm được các thành phần và cách lập trình cho MCU. Học luôn trên dev board và có debugger hỗ trợ là hợp lý, bởi giá tiền các thiết bị đó không đắt nữa, tiết kiệm khá nhiều thời gian so với việc dạy làm mạch.

                          Chọn dòng chip cấp thấp (8 bit) hay cao hơn hóa ra lại là câu hỏi lớn hơn. Giả sử chọn chip 8 bit, dạy cách thức lập trình và sử dụng chức năng ngoại vi cơ bản, thì kể ra chẳng có tiến bộ mấy so với khoảng chục năm trước khi bọn tôi học vi điều khiển ở trường. Kể ra thì cũng có khác đôi chút: SV sẽ không phải mò mẫm từ mạch phần cứng, tài liệu thì có nhiều hơn, bây giờ debugger có sẵn hơn trước. Vậy kể ra tôi sẽ dạy cho sinh viên kiến thức bị tụt hậu thêm mười năm so với thế giới (chưa tính sự tụt hậu đã có sẵn hồi đầu những năm 2000)! Những kỹ năng lập trình đòi hỏi tính toán và tối ưu code như bác Elenor viết, kể ra khó có nơi nào dạy trong trường được, chỉ khi bắt tay làm những cái phức tạp người ta mới tự học thêm.

                          Trong vòng 1 thập kỷ qua, ngành vi mạch phần cứng chắc tiến bộ rất nhanh, tôi ít để ý mà cũng thấy thế giới tập trung vào việc tăng sức mạnh cho chip không đơn thuần là tăng thêm tốc độ hay dung lượng bộ nhớ, mà ở chỗ tích hợp nhiều công cụ mới vào con chip (chỉ nói MCU thôi, tôi không có kiến thức về các loại SoC), thay đổi kiến trúc chip và tập lệnh để tính toán hiệu quả hơn. Như ở đây ta tranh luận về 8 bit và 32 bit, rõ ràng xu thế phát triển trên thế giới là rất nhanh, cách tiếp cận chuyển đổi kiểu như từ lập trình dòng lệnh sang dạng kéo thả các thư viện vào chương trình. Dạy lại kiến thức như kiểu mình đã tiếp cận trước đây tôi thấy hơi lãng phí.

                          Tuy nhiên nếu bắt đầu bằng chip 32 bit thì gặp vấn đề về tính chấp nhận của thị trường lao động, như mấy trang trước ta đã bàn, nhiều sản phẩm chúng ta làm ở Việt Nam, các công ty muốn sử dụng chip 8 bit nhiều hơn (tuy họ vẫn có năng lực làm với chip cấp cao). Vậy sinh viên đào tạo ra nếu không master về chip 8 bit mà cứ nói với chủ là "em thấy làm bằng chip 32 bit nhanh gọn hơn chứ" thì chắc sớm cuốn gói ra đi.

                          Nhưng mà không lẽ ta ngồi ở đây than vãn thời thế khó khăn, dù sao cũng cần bắt tay vào can thiệp. Thôi thì bây giờ cứ đi theo hướng chọn chip 32 bit, đổi mới tư duy SV sớm chút nào hay chút đó. Tôi cũng có dự tính là dạy luôn embedded OS ngay từ đầu, sau khi SV được dạy về các thiết bị ngoại vi cơ bản của chip. Các bác cho ý kiến thêm nhé! Thanks
                          Lâu rồi tôi không nghe đài, đọc báo, xem tivi, và cũng rời trường hơn 5 năm rồi, nhưng nếu tôi không nhầm thì vi xử lý (trong đó có cả vi điều khiển) chỉ có 2 kiến trúc: Von Neumann và Harvard (microprocessor architecture). Bạn gọi như vậy là thế giới chậm tiến?
                          Intel những năm gần đây cho ra rất nhiều dòng CPU mới (Core Dual, Core 2 Dual, Core i, ...) nhưng thực ra nó chỉ là những phiên bản cải tiến (hoặc thêm bớt) của Pentium 4 (nếu tôi không nhầm).
                          Sẽ là lạc hậu nếu bây giờ sinh viên học về 8051 và vẫn thực hành với các chip AT89C51 (thỉnh thoảng tôi vẫn thấy sinh viên tìm mua) trong khi thực tế người ta đã dừng sản xuất nhiều năm. Tại sao không phải chip AT89S52 hay các chip dễ mua, dễ dùng hơn?

                          Chip có lõi 8051 chưa tuyệt chủng, và chắc cũng không tuyệt chủng trong thời gian gần, khi mà còn nhiều hãng sản xuất và tiếp tục phát triển nó.

                          Như bác picvendor nói, dậy lập trình là phải dậy "phương pháp lập trình", thuật toán, cấu trúc dữ liệu... nhưng cái chúng ta làm được chỉ là dậy sinh viên tiếp cận "ngôn ngữ lập trình". Đó có thể là cái nhìn sai của cả giảng viên và sinh viên.
                          Với sinh viên điện tử khi học lập trình mcu thì cần hiểu cấu trúc phần cứng, có thể làm việc được với các module, ngoại vi... Ở đây có bao nhiêu bác biết quá trình vi điều khiển thao tác một lệnh? tại sao các lệnh nhảy cần nhiều chu kỳ máy hơn? tại sao pipeline sử dụng được cho kiến trúc Harvard mà không sử dụng được cho kiến trúc Von Neumann?...

                          Không biết hợp ngữ, làm sao các bác kiểm tra được tối ưu mã lệnh?

                          Comment


                          • Chẳng thể nào tạo nên những giá trị cao hơn và lâu dài với mấy con CHIP 8 bit vớ vẩn.
                            Giờ là lúc nào, lạc hậu...lạc hậu....

                            Nói cho lắm vào, Dân VN thông minh, nhưng nước VN mãi lạc hậu là vì kiểu tư duy này.

                            1 thằng chỉ làm mỗi LED trái tim như tôi, mà còn suy nghĩ sao ko LÊN ĐỜi chơi với ARM.
                            Bay bổng với 32 bit. Còn các chú, các bác đao to búa lớn mà tuy duy ko qua nỗi 1 con LED.

                            Comment


                            • Nguyên văn bởi KnowMore Xem bài viết
                              Lâu rồi tôi không nghe đài, đọc báo, xem tivi, và cũng rời trường hơn 5 năm rồi, nhưng nếu tôi không nhầm thì vi xử lý (trong đó có cả vi điều khiển) chỉ có 2 kiến trúc: Von Neumann và Harvard (microprocessor architecture). Bạn gọi như vậy là thế giới chậm tiến?
                              Intel những năm gần đây cho ra rất nhiều dòng CPU mới (Core Dual, Core 2 Dual, Core i, ...) nhưng thực ra nó chỉ là những phiên bản cải tiến (hoặc thêm bớt) của Pentium 4 (nếu tôi không nhầm).
                              Sẽ là lạc hậu nếu bây giờ sinh viên học về 8051 và vẫn thực hành với các chip AT89C51 (thỉnh thoảng tôi vẫn thấy sinh viên tìm mua) trong khi thực tế người ta đã dừng sản xuất nhiều năm. Tại sao không phải chip AT89S52 hay các chip dễ mua, dễ dùng hơn?

                              Chip có lõi 8051 chưa tuyệt chủng, và chắc cũng không tuyệt chủng trong thời gian gần, khi mà còn nhiều hãng sản xuất và tiếp tục phát triển nó.

                              Như bác picvendor nói, dậy lập trình là phải dậy "phương pháp lập trình", thuật toán, cấu trúc dữ liệu... nhưng cái chúng ta làm được chỉ là dậy sinh viên tiếp cận "ngôn ngữ lập trình". Đó có thể là cái nhìn sai của cả giảng viên và sinh viên.
                              Với sinh viên điện tử khi học lập trình mcu thì cần hiểu cấu trúc phần cứng, có thể làm việc được với các module, ngoại vi... Ở đây có bao nhiêu bác biết quá trình vi điều khiển thao tác một lệnh? tại sao các lệnh nhảy cần nhiều chu kỳ máy hơn? tại sao pipeline sử dụng được cho kiến trúc Harvard mà không sử dụng được cho kiến trúc Von Neumann?...

                              Không biết hợp ngữ, làm sao các bác kiểm tra được tối ưu mã lệnh?
                              Về assembly language thì có một bà viết ở trang mbed.org mà mình cảm thấy là chuẩn xác
                              The classical argument for assembly language programming is that will produce more efficient code. With today’s modern compilers this may still be true in some cases, but only for experienced assembly language programmers that can afford to spend the time optimizing code. The vast majority of programmers will have more efficient code using the compiler and will also be several times more productive since it takes fewer lines of code in a higher level language such as C/C++ and these lines can also be coded and debugged faster to implement an application. In most cases, more speedup will typically be obtained by concentrating the development effort on improving the algorithms used in an application.
                              Với bọn mình thì assembly chỉ còn được sử dụng trong các trường hợp:
                              - Viết startup code trước khi gọi C functions
                              - Viết một vài chỗ trong scheduler của RTOS khi muốn processor hoạt động chính xác theo qui trình định trước (tức là nghiêng về predictable chứ không phải optimized). Tuy nhiên, trong một số implement thì phần này người ta cũng viết bằng C luôn rồi.
                              - Sử dụng để viết các DSP library sử dụng các DSP instruction sẵn có của platform
                              - Khi xảy ra lỗi mà không phát hiện được bug trong ngôn ngữ C thì phải dump memory và phân tích các lệnh assembly

                              Túm lại là trong 100 người thì chỉ 2-3 người là cần dùng ngôn ngữ assembly. Mà vấn đề cần đến assembly mới giải quyết được thì cũng có nghĩa là nó cực kỳ xương xẩu. Vấn đề xương xẩu thì không dành cho người mới... Đó là lý do tại sao, nếu là mình thì phần assembly mình đưa vào phần advanced, cho tự nghiên cứu chứ không cần đưa ra dạy.

                              Về 8051, tại sao quan điểm của bạn lại là dùng cái kiến trúc này để dạy thay vì dùng một kiến trúc hiện đại hơn? (nó vẫn được dùng không có nghĩa là nó thích hợp để giảng dạy) Nói một cách mỉa mai như bạn nào đó ở trước là nói ARM thì nó "sang mồm" hơn, nhưng nếu 1 kiến trúc khác không có ưu điểm gì về kỹ thuật cũng không "sang mồm" bằng thì chọn con "sang mồm" vẫn hơn chứ?

                              Comment


                              • Nguyên văn bởi picvendor Xem bài viết
                                Tuy nhiên nếu bắt đầu bằng chip 32 bit thì gặp vấn đề về tính chấp nhận của thị trường lao động, như mấy trang trước ta đã bàn, nhiều sản phẩm chúng ta làm ở Việt Nam, các công ty muốn sử dụng chip 8 bit nhiều hơn (tuy họ vẫn có năng lực làm với chip cấp cao). Vậy sinh viên đào tạo ra nếu không master về chip 8 bit mà cứ nói với chủ là "em thấy làm bằng chip 32 bit nhanh gọn hơn chứ" thì chắc sớm cuốn gói ra đi.
                                Bạn có thể suy nghĩ thêm về một số điểm sau:
                                - Dao mổ gà không giết được trâu nhưng dao mổ trâu thì giết được gà. Khoảng cách giữa 32 bit và 8 bit không xa như khoảng cách giữa lập trình .Net cho PC với lập trình MCU nên chắc chắn với bạn một điều là người làm tốt con 32 bit thì sẽ làm tốt con 8 bit sau 1 thời gian rất ngắn. Nếu cty nào bảo rằng bạn chỉ biết 32 bit mà không biết 8 bit nên không nhận thì mình nghĩ bạn không nên cố vào cty đó.
                                - Mình nghĩ phần lớn các cty nước ngoài ở VN mà làm lập trình nhúng thì chủ yếu sẽ là 16 hoặc 32 bit vì thực ra 8 bit không có nhiều software cần phải làm. Một số cty có nhiều nhân lực như FPT, Renesas, Samsung... thì có lẽ là họ cũng dùng 16/32 bit. Tổng số nhân lực ở các cty này có lẽ là nhiều hơn tổng số nhân lực ở các công ty chỉ dùng 8 bit

                                Comment

                                Về tác giả

                                Collapse

                                hoingu Tìm hiểu thêm về hoingu

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X