1. Tuyển Mod quản lý diễn đàn. Các thành viên xem chi tiết tại đây

Từ 8051 đến các hệ thống nhúng mã nguồn mở.

Chủ đề trong 'Điện - Điện tử - Viễn thông' bởi opentdoors, 21/05/2004.

  1. 1 người đang xem box này (Thành viên: 0, Khách: 1)
  1. opentdoors

    opentdoors Thành viên mới

    Tham gia ngày:
    09/01/2004
    Bài viết:
    1.205
    Đã được thích:
    0
    Bytecode không phải là hexa sao? Bạn đừng nhầm lẫn với mã hexa sinh ra trong file .hex của 8051.
    Mình không có dự định trình bày về lý thuyết HĐH, và HĐH thời gian thực cũng như "HĐH nhúng thời gian thực" ( cái này là bác tự định nghĩa đấy nhá). Mình đã giới thiệu 2 cuốn tài liệu ở trên rồi, 1 của Andrew Tannebaum, 1 của Phillipe Laplante đó.
    Còn 8051 là mình mô tả 1 cách đơn giản nhất, nói suông đâu có được. Từ từ rồi mình post tiếp mã 1 số hàm.
  2. TuLa

    TuLa Thành viên quen thuộc

    Tham gia ngày:
    24/10/2002
    Bài viết:
    413
    Đã được thích:
    0
    Hề hề, cười lên cho đời đỡ vất vả đi nào !
    Thấy chủ đề và các bài viết của bác hay quá nên Em nhiệt tình hưởng ứng nhào dô cho rôm rả thôi mà !
    Giá như bác nói rõ luôn mục đích hoặc nội dung chính mà bác muốn thảo luận trong chủ đề này là gì thì Em đã không hàm hồ thế !
    Bác vừa giới thiệu 02 quyển sách rất hay về chủ đề này, nhất là cho các bạn "Jump To Start", chưa có khái niệm hoặc kinh nghiệm về thể loại "Hệ nhúng thời gian thực" ! (chết rồi, không biết là bác đã nói tới thuật ngữ này chưa nữa !!!) cũng như các Hệ xử lý song song. 2 quyển này trình bầy nhiều về lý thuyết và tính toán tối ưu..., bữa trước Em có xem qua thấy nó vậy nên sợ kô dám bổ túc cho mình chóng mặt chết ! Mà nội dung ở đó cũng có thể tìm được trên Internet, tớ có lần đã download đc nội dung gần giống thế của một luận văn Thạc sỹ về vấn đề này, nhưng giờ kô nhớ địa chỉ và bị die ổ cứng rồi nên xxx... Trên mạng thấy có một số Hệ điều hành Open Source Code nhỏ nhỏ (của một số trường Đại Học nước ngoài) cho các Vi điều khiển rất hữu ích cho thực hành và thực tế khi tham khảo các quyển sách kể trên. (sorry bác Open vì vẫn chưa biết mục đích của Chủ đề là gì nên xen ngang vào đây một tí ).
    Have a Funy Saturday !
  3. Quen_mang_kinh

    Quen_mang_kinh Thành viên quen thuộc

    Tham gia ngày:
    23/05/2002
    Bài viết:
    542
    Đã được thích:
    1
    Các bác bàn luận sôi nổi thế cho ké một tý.
    Có lẽ các bác vẫn nên định nghĩa rõ ràng một chút thế nào là đa nhiệm. Thời gian thực thì định nghĩa thế có thể hiểu được rồi.
    Bác ơi một hệ điều hành đa nhiệm khác với một chương trình đa nhiệm nhe.
    Em đang nói trên quan điểm chương trình (cao siêu hay không thì không quan trọng quan trọng là đạt được mục tiêu bài toán). Từ trước đến giờ đa số chúng ta viết chương trình cho vi xử lý. Tức là chương trình của chúng ta chiếm toàn bộ tài nguyên hệ thống tuỳ ý xử dụng phân phối trong tài nguyên đó sao cho thực hiện được càng nhiều nhiệm vụ càng tốt. Thế không gọi là đa nhiệm là gì. Lợi điểm của phương pháp này là với các hệ nhỏ thì ta làm chủ hoàn toàn tài nguyên tha hồ phân bổ cho thích hợp với phần cứng và yêu cầu. Còn bất lợi theo em là tính kế thừa nâng cấp hơi bị kém. Tính chuẩn hoá và đồng bộ gần như không có. Vì chương trình ai viết theo kiểu của mình...
    Còn hệ điều hành đa nhiệm và thời gian thực nữa dĩ nhiên là khó rồi. Đó là khả năng phân bổ tài nguyên hệ thống (vốn hơi bị nghèo nàn trong hệ thống nhúng) một cách hợp lý để các ứng dụng có thể khai thác chúng đảm bảo thời gian thực.
    Vấn đề đặt ra là hệ nhúng nào thì mới cần đến hệ điều hành nhúng thời gian thực... Như các bác đã biết trong công nghiệp PLC đảm nhận phần lớn công việc một cách Ok. PLC có thể coi là một trình thông/biên dịch thời gian thực được chứ nhỉ.
    Phần lớn vấn đề mà một người có thể giải quyết thì chẳng cần đến hệ điều hành nhúng làm gì.
    Vấn đề có thể khác đi khi chúng ta cần điều khiển một mạng lớn đòi hỏi số liệu được kiểm soát và lưu trữ và dòng dữ liệu lớn. RTU của ngành điện chẳng hạn hay một số thiết bị tổng đài chẳng hạn lúc đó hệ điều hành nhúng đóng vai trò quan trọng.
    Tuy nhiên là khả năng của mình chưa đến mức ấy nên cũng chưa quan tâm lắm. Bàn luận chơi vậy thôi.
    Có lẽ các bác nào rảnh post lên yêu cầu cơ bản của hệ điều hành nhúng thời gian thực cái nhỉ. Có khái niệm rõ ràng thì mới dễ bàn luận.
  4. Quen_mang_kinh

    Quen_mang_kinh Thành viên quen thuộc

    Tham gia ngày:
    23/05/2002
    Bài viết:
    542
    Đã được thích:
    1
    Post tiếp...
    Có lẽ nên làm trên một hệ 32bit trở lên thì hay hơn. Sắp tới Phillips có tài trợ trường em một số vi xử lý 32bit nếu bác có quan tâm thì em thử hỏi xem. Nhưng các bác phải làm chứ xin xong bỏ đấy thì...
    Có lẽ bác chỉ muốn mô phỏng kiểu đa nhiệm của linux (môt hệ điều hành) trên 8051. Chính xác hơn thì mô phỏng cách quản lý bộ nhớ của linux.
    Em thấy rất mơ hồ về vấn đề này vì theo em một kỹ thuật sinh ra để đáp ứng một bài toán thực tế nào đó và kỹ thuật sẽ được tối ưu cho mục đích của mình.
    PLC là một ví dụ.
  5. TuLa

    TuLa Thành viên quen thuộc

    Tham gia ngày:
    24/10/2002
    Bài viết:
    413
    Đã được thích:
    0
    Một cách phổ biến về các sản phẩm công nghệ cao, kỹ thuật số thì: cứ khoảng 4 tới 6 tháng là lại ra đời hoặc đổi đời một thế hệ sản phẩm mới với nhiều tính năng mới vượt trội nhưng giá thành thì hạ hơn rất nhiều. Vậy thì thử hỏi nền công nghệ cao Việt Nam tại thời điểm này và ít nhất vài năm tới làm sao có thể bám theo ? Mà bám theo bằng cách nào ? ===> Dùng $ ư ? Xin thưa có $$$$ và nhiều $$$ cũng X mua được hoặc nếu mua được thì có đủ đẳng cấp để hiểu nó không, khi hiểu được cái râu ria của nó thôi thì thế giới đã chuyển sang một trào lưu công nghệ mới rồi ! Tại sao kô mua được ? Vấn đề là ở chỗ công nghệ đó không thuộc về riêng một cá nhân nào, không do một người lắm giữ, và đặc biệt nó không phải là sách vở mà là cả một Hệ thống các công nghệ kèm theo, cả một đội ngũ những chuyên gia, kỹ sư chủ chốt và cả một núi tiền đang rót vào đó từng ngày không ngơi nghỉ ! Mỗi một con người trong đó đáng giá bằng cả một núi vàng đối với các kẻ bên ngoài lăm le săn đón). Như đã nói qua ở trên, những con người ở đó đều là những con người đầy nghị lực, tâm huyết và trí tuệ..., họ làm ở đó không phải vì $, vì những đãi ngộ với những người chủ chốt đó ở mức quá thượng lưu rồi =>>> họ làm ở đó vì muốn khẳng định mình và muốn cống hiến vì cái gì đó, vì lý tưởng riêng của họ (tớ X biết vì tớ chưa ở đó :-D); khi họ rời khỏi đó thì giống như cá rời khỏi nước, chẳng bao lâu khi mà các sản phẩm công nghệ mới được thay thế thì họ thành lỗi thời... Nói qua, nói lại thì có lẽ mọi người cũng hiểu, việc phát triển các sản phẩn công nghệ cao, kỹ thuật số là sân chơi của các đại gia, của con nhà giàu sành điệu; là sân chơi của những kỹ sư, những chuyên gia cỡ bự; riêng đối với Việt Nam thì tiềm lực dốc sức hết mình vào lĩnh vực này thì cũng chỉ đáng một cu con kháu khỉnh mới vắt mũi chưa sạch thôi ! Tới nay, có lẽ Việt Nam có một vài tên tầm cỡ nhất cũng chỉ ở mức đứng chầu rìa vỗ tay khen hát hay :-D :-D :-D,,,,,,, Hy vọng, trong tương lai không xa Một thiếu niên được nhận xét là kháu khỉnh, là thiếu niên anh dũng này sẽ trở thành một Việt Nam tuy nhỏ bé nhưng ai cũng phải ngước nhìn. Thiếu niên này có mau trưởng thành và giữ được tố chất hay không còn tùy thuộc nhiều vào chế độ dinh dưỡng và sự quyết tâm bồi dưỡng Hy sinh đời bố củng cố đời con, cũng như sự lỗ lực của chính những mầm non anh dũng !
  6. opentdoors

    opentdoors Thành viên mới

    Tham gia ngày:
    09/01/2004
    Bài viết:
    1.205
    Đã được thích:
    0
    Lĩnh vực mình đang muốn đề cập đến này là các ứng dụng của Linux, ngoài các ứng dụng máy chủ, xử lý song song... là các ứng dụng của nó trong các hệ thống điện tử, điều khiển..., với phần cứng là tối thiểu nhất.
    Mình muốn trình bày vấn đề này từ những cái mà chúng ta đang làm và đang quan tâm hiện nay, từ đó mình giới thiệu đến linux như 1giải pháp cần chú ý đến.(Có vẻ mình hơi rườm rà )
    Đúng như Quen_mang_kinh nói, 1 chương trình đa nhiệm với 1 HĐH đa nhiệm không đồng nhất với nhau. Tuy nhiên mình muốn nói ở chỗ, ít khi người ta nói đến HĐH nhúng, dù HĐH đó có nạp vào ROM đi nữa. Mình không có dự định viết 1 HĐH cho 8051(1 số cái lấy từ trên mạng, nhưng chủ yếu là tìm hiểu).
    Đa nhiệm không có nghĩa là làm nhiều chức năng cùng 1 lúc. Một hệ thống đa nhiệm là hệ thống tuân theo các tiêu chuẩn POSIX của IEEE.

    Mình giới thiệu qua về các hệ thống Linux này:
    -uCLinux (http://www.uclinux.com)là một phiên bản của Linux và được sử dụng chủ yếu để nhúng vào các thiết bị cầm tay trong các lĩnh vực multimedia, cell-phone... từ đó đẻ ra khái niệm linux-on-chip, người ta cho ra đời những con chip mà mã của uCLinux đã được nhúng bên trong (tham khảo tại http://www.zsigmadesigns.com, Cty này đã xuất hiện tại VN)
    -ELKS (embedding linux kernel subset): là 1 nhân linux rất nhỏ chạy trên các uP từ 8086 trở lên, và có thể nạp vào ROM thay cho FDD hay HDD. Cái này mình đã thực hiện với FDD rồi. Ngoài ra ELKS cho phép boot máy tính từ ROM (0xFFFFFFF0) như 1 ROM-BIOS. ( Bạn nào muốn tự mình viết 1 phiên bản ROM-BIOS đơn giản có thể download phần mềm tinybios với mã nguồn bằng asm).
    -FreeBios: 1 hệ Linux nhúng hoàn toàn như 1 ROM-BIOS với mã nguồn viết bằng GNU C.
    -Các hệ thống Linux real-time như MonstaVista, RTLinux, RTAI,BlueCat...
    Mình đang thử với BlueCat và ELKS.
    Được opentdoors sửa chữa / chuyển vào 04:05 ngày 23/05/2004
  7. opentdoors

    opentdoors Thành viên mới

    Tham gia ngày:
    09/01/2004
    Bài viết:
    1.205
    Đã được thích:
    0
    Hiện nay, người ta đã đưa ra các thiết bị mạng công nghiệp trong các hệ thống như SCADA, modbus... (http://www.moxa.com, http://www.hw-server.com) hay các single-board, với linux inside. Vi xử lý trong các thiết bị này thường là họ x86 (Xscale, 386/486/Pentium) (http://www.tern.com, http://www.emac.com ...). Những thiết bị như thế này có thể gọi là các ứng dụng PC-based với linux bên trong Flash hay Compact disk-on-chip.
    Khi sử dụng linux, có nghĩa là người ta sẽ không cần phải quan tâm đến các driver cho TCP/IP, serial hay PCI chipset...
    Ngoài ra, các hệ thống quân sự, viễn thông, robot người ta cũng ứng dụng RT Linux ( cái này mình biết thông qua net).
    Ban đầu mình cũng định tự làm lấy 1 486 single-board, nhưng với 32 đường địa chỉ, không thể sử dụng các IC giải mã thông thường, cũng không thể tìm mua được các IC của Intel. Sử dụng mainboard là hay nhất.
    ELKS thì đơn giản như mình đã nói. Mình trình bày về BlueCat, cũng như sơ sơ các Linux real-time.
    Thông thường từ mã nguồn ban đầu sau khi biên dịch mã của Linux được nén lại gọi là ảnh của HĐH, tuỳ theo kiến trúc của uP mà ảnh sau khi biên dịch nằm trong thư mục i386,ppc hay m68k trong thư mục arch.
    Khi xây dựng 1 hệ thống realtime hay nhúng thì người ta đầu tiên phải tối thiểu hoá các chức năng của kernel, nói tóm lại người ta chú ý đến file mã nguồn sau, đối với kiến trúc x86:
    arch/i386/kernel/entry.S : đây là mã viết bằng asm để tạo ra điểm bắt đầu của linux.
    arch/i386/kernel/irq.h
    arch/i386/Makefile : để loại bỏ 1 số thành phần khi biên dịch
    driver/char/serial.c
    include/linux/shed.h : modify cấu trúc của 1 task
    include/asm-i386/unistd.h
    init/main.c : hàm main của kernel
    kernel/shed.c : là hàm sheduler của hệ thống.
  8. opentdoors

    opentdoors Thành viên mới

    Tham gia ngày:
    09/01/2004
    Bài viết:
    1.205
    Đã được thích:
    0
    Tốt quá, rất cám ơn bác. Nếu có điều kiện bác với em chia sẻ về cái này. Nếu bác đang công tác ĐHBK TPHCM thì Cty em cũng gần đấy ( trong khu của Kasaty ấy), bác cho phép thì lúc nào rảnh em sang thăm.
    Tất nhiên, hiện nay nói đến đa nhiệm đồng nghĩa với việc sử dụng vi xử lý 32 bit, nhưng có rất nhiều khó khăn , một board mạch với uP 32 bit thường phải sử dụng đến FPGA ( cái này không biết xử lý thế nào nếu không có tài trợ).
    PLC là 1 thiết bị công nghiệp chuyên dụng với cấu trúc của nó gắn với 1 lĩnh vực cụ thể, phục vụ cho mục đích rõ ràng. Còn các hệ thống mình đang nói đến gắn liền với các vi xử lý cho máy tính của Intel x86, PowerMac, M68K... và liên quan đến cấu trúc của máy tính. Chữ máy tính mình nói không đồng nghĩa với PC hay desktop.
    Mình chưa đủ tầm để nói các hệ thống đó sinh ra để giải quyết các bài toán kỹ thuật gì.
  9. opentdoors

    opentdoors Thành viên mới

    Tham gia ngày:
    09/01/2004
    Bài viết:
    1.205
    Đã được thích:
    0
    Một hệ thống realtime thường tuân theo chuẩn POSIX cho 1 hệ thống đa nhiệm:
    -Synchronous và asynchronous I/O.
    -Semaphore
    -Memory locking.
    -Shared memory.
    -Execution sheduling (round-robin, priority..)
    -Clocks và timers
    -Message passing.
    Đây là các từ ngữ chuyên môn của HĐH nên mình không dịch.
    Khi máy tính trở nên nhỏ hơn, nhanh hơn, rẻ hơn và trở nên tin cậy hơn, thì khả năng ứng dụng rộng rãi hơn. Về mặt kiến trúc thì PLC ( Siemens ) như 1 máy tính với bộ nhớ RAM, ROM, các cổng giao tiếp...thành phần firmware của PLC xử lý các tiến trình điều khiển thông qua các cổng giao tiếp, vì vậy PLC được coi như là 1 hệ thống embedding, mặt khác các quá trình mà PLC xử lý là trong công nghiệp với khoảng thời gian rất lớn so với khả năng đáp ứng của vi xử lý trong PLC, nên về mặt này có thể nói PLC là 1 hệ thống thời gian thực. Ngoài PLC, còn rất nhiều thiết bị khác hoạt động như 1 PC với giao diện đồ hoạ, giao tiếp TCP/IP được dùng trong công nghiệp.
    Các bộ điều khiển trong các thiết bị khác như máy photocopy, máy giặt , tủ lạnh... cũng là các hệ thống nhúng. Hai thuật ngữ nhúng và thời gian thực được sử dụng xen kẽ với nhau.
    Mặt khác, router chẳng hạn, router thực chất là 1 máy tính với số cổng giao tiếp mạng lớn hơn 2. Hệ điều hành của router nằm trong Flash ROM và được tải ra RAM sau khi được boot từ bios. Mặt khác, nó phải đáp ứng được các yêu cầu về xử lý thông tin, độ trễ của luồng dữ liệu trong phạm vi cho phép. Do đó nó là hệ thống real-time. Với router, thì có thể gọi là "Hệ thống nhúng đa nhiệm thời gian thực", nói gọn lại chỉ cần gọi 1 hệ thống real-time thôi.
    Bạn đang truy nhập Internet bằng ADSL, trong board điều khiển chính của DSLAM (Alcatel) chính là 1 em Celeron đấy.
    Còn trong thiết bị chuyển mạch IP của CityPhone, board mạch chủ cũng sử dụng 1 em Pentium 233.
    Trong các thiết bị viễn thông thì các board mở rộng giao tiếp với CPU thông qua chuẩn CompactPCI, cũng như PCI nhưng có khả năng Hot-plug.
  10. opentdoors

    opentdoors Thành viên mới

    Tham gia ngày:
    09/01/2004
    Bài viết:
    1.205
    Đã được thích:
    0
    Hix, các bác chuồn đâu hết cả rồi? Hay là vấn đề này quả thực cao siêu quá. (Bác nào đấy cứ quan trọng hoá).

Chia sẻ trang này