Friday, December 14, 2012

Hệ Thống Nhúng


Khái niệm về hệ thống nhúngHệ thống nhúng (Embedded system) là một thuật ngữ để chỉ một hệ thống có khả năng tự trị được nhúng vào trong một môi trường hay một hệ thống mẹ.Các hệ thống tích hợp cả phần cứng và phần mềm phục vụ các bài toán chuyên dụng trong nhiều lĩnh vực công nghiệp:điện tử, viễn thông, công nghệ thông tin,tự động hoá điều khiển, quan trắc và truyền tin.Hệ thống nhúng thường được thiết kế để thực hiện một chức năng chuyên biệt nào đó.Một hệthống nhúng chỉ thực hiện một hoặc một vài chức năng nhất địnhThường đi kèm với những yêu cầu cụ thể và bao gồm một số thiết bị máy móc và phần cứng chuyên dụng.Thường được tối ưu hóa nó nhằm giảm thiểu kích thước và chi phí sản xuất.Các hệ thống nhúng thường được sản xuất hàng loạt với số lượng lớn.•  Rất đa dạng, phong phú vềchủng loại.•  Về độ phức tạp:   – có thể rất đơn giản với một vi điều khiển   – Có thể rất phức tạp với nhiều đơn vị, các thiết bị ngoại vi và mạng lưới được nằm gọn trong  một lớp vỏ máy lớnKhái niệm ngắn gọn:là hệ thống thực hiện một số chức năng đặc biệt có sử dụng vi xử lýCác đặc điểm của hệ thống nhúngCác hệ thống nhúng được thiết kế để thực hiện một số nhiệm vụ chuyên dụng.Không đóng vai trò là các hệ thống máy tính đa chức năng.Có thể đòi hỏi ràng buộc về tính hoạt động thời gian thực để đảm bảo độan toàn và tính ứng dụng.Một số hệ thống không đòi hỏi hoặc ràng buộc chặt chẽ.Một hệ thống nhúng thường không phải là một khối riêng biệt mà là một hệ thống phức tạp nằm trong thiết bị mà nó điều khiển.Phần mềm được viết cho các hệ thống nhúng được gọi là firmware và được lưu trữ trong các chip bộ nhớ chỉ đọc (read-only memory) hoặc bộ nhớflash.Phần mềm thường chạy với số tài nguyên phần cứng hạn chế: không có bàn phím, màn hình hoặc có nhưng với kích thước nhỏ , không đủ bộ nhớ.Giao diện: Các hệ thống nhúng có thể không có giao diện hoặc có đầy đủ giao diện giao tiếp với người dùng tương tự như các hệ điều hành trong các thiết bị để Trong các hệ thống mới: Có thể thông qua kết nối mạng,Có thể dùng giao diện web.
Kiến trúc CPU: Chia thành hai loại: vi xử lý ,vi điều khiển.Nhiều loại kiến trúc CPU được sử dụng trong thiết kế hệ nhúng : ARM, MIPS, Coldfire/68k, PowerPC, x86, PIC, 8051, Z8…. Các hệ thống nhúng có kích thước nhỏ và được thiết kế để hoạt động trong môi trường công nghiệp thường lựa chọn PC/104 và PC/104++.. các hệ thống nhúng có kích thước rất lớn thường sử dụng một cấu hình thông dụng. Sau đó nhân CPU được mua và thêm vào như một phần của thiết kế chip..

Kiến trúc điển hình của hệ thống nhúngKiến trúc của một hệthống nhúng là một sự trừu tượng hóa thiết bị nhúngCác thành phần phần cứng và phần mềm ở mức kiến trúc trong một hệ thống nhúng được đại diện bởi các phần tử có tác động lẫn nhau. Các phần tử là đai diện của phần cứng hoặc phần mềm nhưng chi tiết đã được trừu tượng hóa chỉ có thông tin về các mối quan hệ qua lại và các hoạt động của chúng.Các phần tử này có thể được tích hợp bên trong thiết bị nhúng hoặc tồn tài bên ngoài hệ thống nhúng và tương tác với các phần tử bên trong một kiến trúc hệthống nhúng bao gồm các phần tử của hệ thống nhúng, các phần tử tương tác với một hệ thống nhúng, các tính chất của mỗi phần tửriêng biệt và mối quan hệ tương tác giữa các thành phần.một kiến trúc hệ thống nhúng bao gồm các phần tử của hệ thống nhúng, các phần tử tương tác với một hệ thống nhúng, các tính chất của mỗi phần tử riêng biệt và mối quan hệ tương tác giữa các thành phần.một số kiểu cấu trúc như sau: cấu trúc theo dạng modul và cấu trúc theo thành phần và kết nối.mô hình hệ thống nhúng bao gồm: phần cứng, phần mềm hệ thống và phần mềm ứng dụng.một số loại kiến trúc phần mềm thông dụng trong các hệ thống sau:-  Vòng lặp kiểm soát đơn giản.
-  Hệ thống ngắt điều khiển.
-  Đa nhiệm tương tác
-  Đa nhiệm ưu tiên.
-  Vi phân và nhân ngoại.
-  Nhân khối.
Các yêu cầu về kĩ năng thiết kế:
Thiết kế điện tử
Yêu cầu kĩ năng
Quản lí tích hợp hệ thống
Có kiến thức về quản lý dự án thiết kế, kiến trúc hệ thống.Có kỹ năng làm việc theo nhóm, khả năng sáng tạo.Kỹ thuật phân tách, tích hợp hệ thống,
Thiết kế, phát triển phần mềm ứng dụng.
Hiểu biết vềcấu trúc dữliệu, giải thuật, CSDL, KTLT cấu trúc, hướng đối tượng, đồ họa, mutimedia , xử lý tín hiệu,…
Thành thạo kỹ thuật lập trình, ngôn ngữ lập trình:C/C++,
Thiết kế firmware
Hiểu biết về hệ điều hành thời gian thực, lập trình hệ hống,kiến trúc máy tính, hệ thống nhúng, VXL, bảo mật, network… Thành thạo vềsửdụng các công cụIDE, lập trình C/C++, PHP,JAVA, ….
Thiết kế mạch PCB
Hiểu biết về mạch điện tử, phần cứng VXL,vđk, IC chức năng, FPGA, linh kiện điện tử: footprint, SMD, SMT..Thành thạo các công cụ thiết kế Front-end EDA như: Altium,ÍSE
Thiết kế vi điện tử, linh kiện, IC, phụ kiện
Hiểu biết vềvật lý bán dẫn, nguyên lý mạch tích hợp tương tự, số, mạch RF và cao tần, điện tử ứng dụng
Thành thạo thiết kế layout, ASIC, VLSI sử dụng các công cụ back-end EDA như: MentorGraphic, Cadence, ADS …

Bộ xử lí nhúng:là đơn vịchức năng chính của một hệthống nhúng, và chịu trách nhiệm trong việc xử lý lệnh và dữ liệu.Một thiết bị điện tửcó chứa ít nhất một bộxửlý chủ(master processor ) có thể bổ sung các bộ xử lý tớ( slave processors) cùng làm việc và điều khiển bởi bộ xử lý chủ.Slave processors có thể tham gia và các chỉ lệnh của master processor hoặc thi hành quản lý bộ nhớ, các bus và các thiết bị vào ra.Hệ thống nhúng được thiết kế xung quanh bộ xử lý chủCác bộ vi xử lý chứa một lượng nhỏ bộ nhớ tích hợp và thành phần vào ra (I/O),Các bộ vi điều khiển có phần lớn bộ nhớhệthống và các thành phần vào ra tích hợp trên chip.Các bộ xử lý nhúng có thể tách thành các nhóm dựa trên kiến trúc.Khác biệt giữa các nhóm kiến trúc này là tập hợp các mã máy hướng dẫn các bộ xử lý trong các nhóm kiến trúc có thể thực thi.
Bộ xử lý được xem như kiến trúc tương tự nhau khi chúng có thể thực thi cùng tập lệnh.Bộ nhớ:Nền tảng nhúng có sự phân cấp bộ nhớ, 1 tập hợp gồm các loại bộ nhớ khác nhau,mỗi loại đều có tốc độ kích cỡ và cách sử dụng riêng biệt.Một vài bộ nhớ có thể được tích hợp sẵn trong bộ XL,như các thanh ghi và các loại bộ nhớ sơ cấp đã biết, là nơi mà bộ nhớ có thể kêt nối trực tiếp hay tích hợp trong bộ xử lí như:ROM,RAM và level-1 cache…Bộ nhớ bao gồm các loại bộ nhớ sơ cấp, bộ nhớ chính và bộ nhớ cấp 2/cấp 3..Quản lí bộ nhớ ngoài:
Trên hệ thống có thể có nhiều loại bộ nhớ khác nhau.Các phần mềm cũng chạy trên các loại bộ nhớ khác nhau và cần có IC quản lí bộ nhớ(có thể được tích hợp vào CPU).2 loại QLBN phổ biến trên hệ thống nhúng : Điều khiển bộ nhớ(MEMC), Quản lí bộ nhớ(MMU).MEMC:được dùng để cài đặt và cung cấp các giao diện,không dính tới các loại bộ nhớ khác nhau trong hệ thống như SRAM và DRAM,truy cập đồng bộtới bộnhớvà kiểm chứng tính toàn vẹn của dữliệu được chuyển,truy cập trực tiếp với địa chỉvật lý hai chiều của chính bộ nhớ.MMU: chứa không gian bộ nhớ ảo lớn hơn trong bộ nhớ vật lý hiện thời nhỏ hơn, có thể nằm bên ngoài bộ xử lý chủ và được dùng để dịch các địa chỉ logic(ảo) thành các địa chỉ vật lý (phân chia bộnhớ).Hệ thống vào ra I/O:là thiết bịchịu trách nhiệm di chuyển thông tin đến và đi của bảng mạch đến thiết bị vào/ra kết nối tới một hệ thống nhúng;Vào/ra ởmức cao có thể được chia nhỏ ra thành những bộ nhỏ hơn của thiết bị ra,thiết bị vào, và cả thiết bị mà bao gồm cả thiết bị ra và thiết bị vào.Thiết bị ra nhận dữ liệu từ những bộ phận bảng mạch I/O và hiển thị dữ liệu đó theo một số cách thức, ví dụ:in dữ liệu ra giấy, in ra đĩa,hiển thị lên màn hình hoặc là nhấp nháy đèn LED...Thiết bị vào ví dụ như chuột, bàn phím hoặc là điều khiển từ xa truyền dữ liệu đến bảng mạch I/O.quản lí dữ liệu nối tiếp và song song:Lưu trữ, truyền  và nhận dữliệu mỗi lần 1 bit :Bao gồm serial port (cổng nối tiếp) và serial interface (giao diện nối tiếp).Giao diện nối tiếp quản lý chuỗi  dữ liệu được truyền và nhận giữa CPU chính và một số thiết bị I/O hoặc bộ điều khiển của nó.Dữ liệu có thể được truyền:trong 1 chiều hướng,,trong cả 2 hướng riêng,cả 2 hướng đồng thời; có thể truyền đồng bộ hoặc không đồng bộ.Hệ thống BUS:Tất cả các bộ phận chính khác nhau tạo nên một hệ thống nhúng: bộ xử lí tổng thể, bộphận vào ra I/O, bộ         nhớ - được kết nối với nhau thông qua các bus trong hệ thống nhúng.Bus là một tập hợp các dây mang các tín hiệu khác nhau, địa chỉ, và kiểm soát tín hiệu (tín hiệu đồng hồ,yêu cầu, nhận biết tín hiệu, ...) giữa tất cả các thành phần chính khác trên bảng nhúng. Trong 1 hệ thống phức tạp, có thể có nhiều bus       trên một hệ thống.Cần một cầu nối giữa các bus.Chia ra làm 3 loại chính:– Bus hệthống: kết nối bộ nhớ ngoài và bộ nhớ đệm đến CPU chỉ và/hoặc cầu nối đến bus khác .– bus backplane:kết nối bộnhớ, CPU, IO trên 1 bus.– bus vào ra I/O: phần mở rộng của hệ thống bus để kết nối các thành phần còn lại cho CPU với nhau, đến hệ thống bus qua cầu nối và/hoặc đến các hệ thống nhúng của riêng mình, qua cổng thông tin I/O.Có thểchia làm 2 loại:–Có thểmởrộng:PCMCIA,PCI,IDE,SCSI,USB.– Không thể mở rộng:I2C
Trọng tài BUS và định thời:Lý do cần trọng tài?Đi kèm với bus là một sốloại giao thức được định nghĩa cách các thiết bịtruy nhập vào bus (trọng tài ) các qui định kèm theo các thiết bị phải tuân để giao tiếp trên bus( bắt tay ) và các tín hiệu liên kết với các dòng bus khác nhau;các thiết bị truy cập vào một bus bằng một hệ thống trọng tài bus; Trọng tài Bus được dựa trên các thiết bị đang được phân loại như là một trong hai loại thiết bị    chủ (master) và thiết bị tớ(slave). Một hệ thống trọng tài bus đơn giản nhất là chỉ có một thiết bị ở trên bảng (board) –là chủ, trong  khi tất cả các thiết bị khác là thiết bị tớ. Trong trường hợp này, không cần có trọng tài khi có thể chỉ là một máy chủ.Đối với hệ thống bus có nhiều thiết bị chủ,cần có một hệ thống trọng tài( arbitrator)để xác định thiết bị nào có thể sử dụng bus.Cơ chế trọng tài BUS: có nhiều cơ chế trọng tài Bus, nhưng phổ biến nhất là: song song tập trung động,tập trung theo từng chuỗi(daisy_chain), tự lựa chọn phân phối.Song song tập trung động:TT ở vị trí tâm, tất cả các bít chủ kết nối với trọng tài, ở vị trí TT.máy chủ sau khi được cấp quyền sẽ truy nhập đén bít thồng qua FIFO hoặc ưu tiên trên cơ sở hệ thống.tuật toán FiFO lưu trữ thứ tự ICSD bus yueeu cầu sử dung bit của các thiết bị trong danh sách của thiết bị chủ.Thiết bị chủ được thêm ở cuối hàng đợi và đc phép truy nhập bit từ đầu hàng đợi.Hệ thống phân xử ưu tiên phân biệt vs máy chủ dựa trên tầm quan trọng tương đói vs nhau và hệ thống.Về cơ bản thì mỗi thiết bị chủ đc gán 1 giá trị và sẽ hoạt động theo giá trị ưu tiên đó.Thiết bị chủ có quyền ưu tiên cao nhất luôn có thể chặn trước đc truy nhập Bus của các thiết bị có quyền ưu tiên thấp hơn.Tập trung theo từng chuỗi:
Là một hệ thống trong đó bộ phân xử được kết nối với máy chủ và các máy chủ được kết nối thành chuỗi, không kể đến việc máy chủ tạp yêu cầu cấp bus thì máy chủ đầu tiên trong chuỗi đc cấp bus và chuyển sang cấp bus trong nháy cho máy chủ tiếp theo khi máy chủ đầu tiên ko cần bus nữa.Tự lựa chọn phân phối:Là một hệ thống ko có bộ phân xử trung tâm, ko có mạch bổ sung.máy chủ tự phân xử bằng cách trao đổi thông tin ưu tiên để quyết định, nếu máy chủ có ưu tiên cao hơn sẽ đc dung bus, hoặc nếu có cùng mức thì loại bỏ tất cả các yêu cầu sử dụng bus khi có xung đột từ 2 hay nhiều hơn các máy chủ yêu cầu sử dụng bus.Có 2 giao thức phổ biến nhất để bắt đầu bất cứ  bắt tay bus nào là chỉ dẫn hay yêu cầu 1 giao tiếp(hoặc đọc hoặc viết) và phụ thuộc, đáp ứng chỉ dẫn giao tiếp hoặc yêu cầu(VD: 1 sự thừa nhận ACK hay yêu cầu ENQ).cơ sở của 2 giao thức này là điều khiển tín hiệu thông qua điều khiển một dải bus riêng hay qua 1 dải dữ liệu.Dù nó là 1 yc dl tại bộ nhớ hay là giá trị của bộ điều khiển I/O, điều khiển hay trạng thái đăng kí, nếu phụ thuộc vào đáp ứng tỏng việc xác điịnh đên syêu cầu truyền của thiết bị chủ. Sau đó hoặc là 1 địa chỉ của dữ liệu liên quan đến việc truyền đưc trao đổi qua 1 dải bus riêng hay 1 dải dữ liệu hay địa chỉ này đc truyền như 1 phần của việc truyền giống như yêu cầu truyền ban đầu, nếu địa chỉ này hợp lệ sau đó trao đổi dữ liệu trên đường truyền dữ liệu.Các bus có thể hợp thành 1 tập hệ thống truyền, ra lệnh như thế nào để bus truyền dữ liệu.Các hệ thống phổ biến nhất là đơn lẻ, nơi mà 1 địa chỉ truyền đi trước thông tin truyền của dữ liệu và chặn,nơi mà địa chỉ đc truyền dữ liệu 1 lần cho nhiều thông tin của dữ liệu.Một hệ thống đường truyền bị chặn có thể làm tăng băng thông của bus và đôi khi nó phép để tách rời hệ thống.Nó đc dung phổ biến cho các loại giao tiếp bộ nhớ, ví dụ như giao tiếp vùng nhớ đệm.Tuy nhiên 1 hệ thống bị chặn tác động tiêu cực đến hiệu suất của bus, trong đó các thiết bị khác có thể chờ lâu hơn để truy nhập vào bus.1 trong những thế mạnh của hệ thống truyền đơn lẻ bao gồm các thiết bị ko phụ thuộc vào yêu cầu để có bộ đệm để lưu trữ địa chỉ và các thông tin của dữ liệu được liên kết vs địa chỉ, cũng như ko xử lí bất kì vấn đề gì nảy sinh với nhiều thông tin hay đến theo thứ tự hay ko liên kết vs 1 địa chỉ.Bus không mở rộng VD như I2C bus.các bus i2c kết nối với các bộ phận xử lý có kết hợp 1 i2c trên giao diện chip, cho phép trực tiếp truyền thông tin giữa các bộ xử lý trên bus. 1 máy chủ /máy fu.  thộc vào mối quan hệ giữa với các bộ xử lý tồn tại ở tất cả cái giai đoạn . với máy chủ hoạt động như máy chủ truyền nhận. bus i2c là bus 2 dây với 1 chuỗi dải dữ liệu (SDA) và 1 chuỗi dải clock(SCL). Bộ xử lý thông qua i2c định địa chỉ bởi 1 địa chỉ duy nhất là 1 phần của 1 luồng dữ liệu được truyền giữa các thiết bị. máy chủ i2 bắt đầu truyền dữ liệu và tạo đề ra các xung nhịp cho phép truyền. về cơ bản SCL có chu kỳ cao hoặc thấp. 1 máy chủ sau khi sử dụng dải SDA để chuyển dữ liệu đến các máy phụ. Đối vs việc truyền tải dữ liệu bus i2c là 1 dải bus 8 bit  điều nay có nghĩa là trong khi không có giới hạn về số lượng byte có thể được truyền đi trong 1 phiên , chỉ có 1 byte của dữ liệu được truyền đi cùng 1 lúc 1 bít tại cùng 1 time.
Bus PCI là bus có thể mở rộng là 1 bus động bộ, điều đó có nghĩa là nó đồng bộ hóa thông tin liên lạc bằng cách sử dụng xung clock . tiêu chuẩn định nghĩa thiết kế 1 bus PCI mới nhất với ít nhất 33MHz xung nhịp( lên tới 66MHz)và độ rộng của 1 bus ít nhất là 32bits( lên tới 64bits). Có thể đưa ra thông lượng tối thiểu xấp xỉ khoảng 132MB/s và lên đến 528MB/s lớn nhất với 64bit truyền cho 66MHz xung , PCI chạy ở 1 trong những tốc độ xung không kế đến tôc độ xung nhịp mà tại đó các thành phần kèm theo nó đang hoạt động. bus PCi có 2 giao diện kết nối:1 nội bộ giao diện PCI bao gồm các khe bên trog PCI để cắm thẻ(audio.vidio)
các giao diện mở rộng làm PCI mở rộng bus,nó cho phép các phần mềm cắm vào bus cho toàn bộ hệ thống tự động điều chỉnh và hoạt động chính xác. Bus PCI cho phép nhiều bus chủ nó được thực hiện tập chung động hệ thống phân xử song song . hệ thông phân xử củ PCI về cơ bản sử dụng tín hiệu REQ #, and GNT# để tạo điều kiện truyền  thông tin giữa bộ khởi động và bộ phân xử bus nói chung 1 PCI được .
các giao diện mở rộng làm PCI mở rộng bus,nó cho phép các phần mềm cắm vào bus cho toàn bộ hệ thống tự động điều chỉnh và hoạt động chính xác. Bus PCI cho phép nhiều bus chủ nó được thực hiện tập chung động hệ thống phân xử song song . hệ thông phân xử củ PCI về cơ bản sử dụng tín hiệu REQ #, and GNT# để tạo điều kiện truyền  thông tin giữa bộ khởi động và bộ phân xử bus nói chung 1 PCI được . các giao diện mở rộng làm PCI mở rộng bus,nó cho phép các phần mềm cắm vào bus cho toàn bộ hệ thống tự động điều chỉnh và hoạt động chính xác. Bus PCI cho phép nhiều bus chủ nó được thực hiện tập chung động hệ thống phân xử song song . hệ thông phân xử củ PCI về cơ bản sử dụng tín hiệu REQ #, and GNT# để tạo điều kiện truyền  thông tin giữa bộ khởi động và bộ phân xử bus nói chung 1 PCI được .Tạo thành từ 5 bước :1. 1 bộ khởi tạo yêu cầu bus bởi việc xác nhân tín hiệu REQ# đến bộ phận xử lý trung tâm . 2.bộ phận xử lý trung tâm cấp 1 bus để bắt đầu bằng cách xác định GNT#.3.Giai đoạn địa chỉ đó bắt đầu khi khởi động bộ kích hoạt FRAME# và sau đó chỉ C/BE[3:0]#, để xác định loại truyền dữ liệu.Bộ nhớ sau đó truyền địa chỉ truyền địa chỉ qua AD[3:0] tại vạch xung bên cạnh . 4. Sau khi đã truyền địa chỉ vạch xung tiếp theo bắt đầu 1 hoặc nhiều giai đoạn địa chỉ dữ liệu đc tuyền qua AD[31:0].C/BE[3:0] cùng với IRDY# và #TRDY cho biết dữ liệu là hợp lệ. 5.Hoặc bộ khởi động hoặc đích có thể kết thúc truyền tải 1 bước qua sự xác nhận của tín hiệu #FRAME tại giai đoạn cuối của truyền dữ liệu.Tín hiệu STOP# để kết thúc giai dịch bus.Hiệu suất Bus: được đo bằng băng thông của nó, là số lượng dữ liệu mà bus có thể truyền dữ liệu trong 1 khoảng thời gian,1 cấu trúc bus bao gồm cấu trúc vật lí và giao thức liên kết bus sẽ tác động đến hiệu suất của nó. VD hệ thống bắt tay đơn giản thì băng thông cao hơn.Các kết cấu hợp lí(độ dài, số dòng, số lượng thiêt bị hỗ trợ) sẽ giới hạn hoặc tăng hiệu suất bus.Các bus ngắn hơn, các thiết bị kết nối ít, nhiều dữ liệu thường nhanh hơn các bus khác và băng thông cao hơn. Độ rộng bus:Số bit dữ liệu mà 1 bus có thể truyền trong 1 chu kì bus(1,8,16,32 bit)
Các thành phần phần mềm của hệ thống BUS: trình điều khiển thiết bị(device driver),hệ điều hành thời gian thực(RTOS), Middleware và các thành phần ứng dụng.
Trình điều khiển thiết bị: Phần lớn các phần cứng nhúng cần phần mềm khởi tạo  và quản lý.Phần mềm giao diện và quản lý phần cứng gọi là trình điều khiển  thiết bị.Trình điều khiển thiết bị quản lý việc truy cập tới phần cứng của các lớp phần mềm cao hơn,liên kết giữa phần cứng và OS, middleware, .là lớp ứng dụng.Các thành phần của driver: Các driver được kết hợp từcác hàm sau (10 hàm): –  I/O Startup, là phần khởi động của nguồn cấp cho I/O hoặc khởi động lại. –  I/O Shutdown, thiết lập I/O trởvềtrạng thái tắt nguồn của nó –  I/O Disable, cấp phát chương trình khác để ngăn chặn hoạt động của I/O- I/O Enable, cấp phát chương trình khác đểkích hoạt hoạt động của I/O -  I/O Acquire, cấp phát chương trình khác để khuếch đại truy cập đơn lẻ(chốt) tới I/O –  I/O Release, cấp phát chương trình khác để nghỉ (mởchốt) I/O –  I/O Read, cấp phát chương trình khác để đọc dữ liệu từI/O –  I/O Write, cấp phát chương trình khác đểviết dữliệu lên I/O –  I/O Install, cấp phát chương trình khác để cài đặt hoạt động mới của I/O –  I/O Uninstall, cấp phát chương trình khác để gỡ bỏ hoạt động của I/O đã được cài đặt. Sửdụng tối thiểu 4 hàm trong 10 hàm trên: – Interrupt-Handling Startup,– Interrupt-Handling Shutdown,– Interrupt-Handling Disable,– Interrupt-Handling Enable.Và có thểcó hàm sau – Interrupt-Handler Servicing.CPU nhìn bộ nhớ như một mảng lớn.Mỗi ô(cell) là một hàng của các byte, số hàng phụ thuộc vào độ rộng bus.Nhìn theo phần mềm, bộ nhớ vật lí được coi như bộ nhớ logic, bao gồm tất cả các loại bộ nhớ vật lí.
Hệ điều hành nhúng: là một sự lựa chọn trong hệ thống nhúng, trong phân lớp,OS nằm trên driver hoặc BSP.HĐH có 2 n/vụ chính: tạo một lớp trừu tượng của phần cứng; Quản lí các hệ thống phần cứng và phần mềm.Tối thiểu có một nhân bao gồm các tính năng chính của hệ điều hành(kernel).
Middleware và các thành phần ứng dụng: middleware là phần mềm hệthống bất kì,không chỉ là một bộ phận chính của hệ điều hành, các bộ điều khiển thiết bị, hay các phần mềm ứng dụng.Middleware thường là phần mềm trung gian giữa các phần mềm ứng dụng với bộ phận chính hay là phần mềm điều khiển thiết bị.Middleware cũng là phần mềm trung gian và điều khiển các phần mềm ứng dụng khác.
Hệ thống thời gian thực là gì?nhiệm vụ của HĐH thời gian thực?Khái niệm: Thời gian thực là một khái niệm rất khó định nghĩa.Theo nghĩa đen, hệ thống phải phản ứng tức thì, thích hợp theo yêu cầu.Theo đúng ý nghĩa, thời gian thực của một sựkiện nghĩa là nó xảy ra ngay lập tức.Nhiệm vụ:quản lí tài nguyên để 1 quá trình hoạt động có thể diễn ra trong một khoảng thời gian chính xác  mỗi khi nó xuất hiện.Các đặc điểm của HĐH thời gian thực-  Đa nhiệm/Đa luồng (Multitasking/multithreading): Một hệ điều hành thời gian thực phải có khả năng xử lý đa nhiệm và đa luồng.
-  Cơ chếưu tiên (Priorities): Hệđiều thành thời gian thực phải có cơ chếưu tiên cho các tác vụ. Các chức năng có yêu cầu giới hạn vềthời gian cao cần được ưu tiên xử lý.
-     Thừa kế ưu tiên (Priority inheritance): Hệ điều thành thời gian thực phải có cơ chế thừa kế ưu tiên.
-  Chiếm quyền (Preemption): Hệđiều hành thời gian thực cần có tính năng chiếm quyền, có nghĩa là khi một tác vụ có mức ưu tiên cao hơn sẵn sàng chạy, nó có thể chiếm quyền của một tác vụcó mức ưu tiên thấp hơn.
-     Trễ ngắt (Interrupt latency):Thời gian trễ ngắt là thời gian từ khi một ngắt từ phần cứng xảy ra đến khi hàm xử lý ngắt chạy. Một hệ điều hành thời gian thực cần có trễ ngắt có thể đoán được và thường càng nhỏ càng tốt.
-  Trễ lập lịch (Scheduler latency): Đây là thời gian bắt đầu từkhi tác vụcó khả năng chạy đến khi tác vụ thực sự chạy. Một hệ điều hành thời gian thực cần có trễn lập lịch có thểxác định được.
-      Đồng bộvà thông tin giữa các process (Interprocess communication and synchronization): Kiểu thông tin phổ biến nhất giữa các tác vụtrong một hệthống nhúng là gửi các bản tin. Một hệđ iều hành thời gian thực cần có một cơ chế xử lý bản tin ởthời gian không đổi.
-     Phân phối bộ nhớ động (Dynamic memory allocation) : Một hệ điều hành thời gian thực cần cung cấp các hàm cung cấp bộ nhớ với thời gian cố định.
Vẽ sơ đồ vị trí hệ điều hành thời gian thực trong model hệ thốngLiệt kê một số hệ điều hành thời gian thực?FreeRTOS, Windows CE, RTLinux,PDOS,uCLinux,Embedded Linux,….Kernel là gì?liệt kê và mô tả các tính năng chính của kernel:Kernel là thành phần trung tâm nhất của hệ điều hành, nó là cầu nối giữa các ứng dụng và việc xử lý dữ liệu ở mức  phần cứng. kernel cung cấp các cơ chế để thực hiện các chính sách.
-  Quản lý process/thread (kernel chịu trách nhiệm quyết định chương trình nào sẽ được chạy trên CPU hoặc các CPU tại một thời điểm nhất định).-  Quản lý bộ nhớ (kernel chịu trách nhiệm quyết định mỗi tác vụ sẽ được sử dụng phần bộ nhớ nào và xác định sẽ làm gì khi không đủ bộ nhớ)
-  Quản lý input/output (kernel cung cấp các yêu cầu từ các ứng dụng để thực hiện các tính năng truy cập vào ra cho các thiết bị tương ứng)
các trạng thái tác vụ bao gồm các trạng thái nào?vẽ sơ đồ và giải thích quá trình chuyển trạng thái?Tác vụ: là những vấn đề lớn được chia thành các vấn đề nhỏ gọi là tác vụ, mỗi tác vụ chỉ làm một thứ và đơn giản, các tác vụ này có thể được cho rằng chạy song song với nhau.Cấu trúc tác vụ: một tác vụ chứa mã lệnh để thực hiện tính năng mà tác vụ được thiết kế cho. Mã lệnh này được chứa trong các hàm tương tự hàm main() trong một chương trình C bình thường.Tuy nhiên, sự khác biệt là mỗi tác vụ có ngữ cảnh (context) trong ngăn xếp (stack) của nó.Mỗi tác vụ bao gồm:-       Đoạn mã thực hiện chức năng
-       Ngăn xếp đựng ngữcảnh
-       Hộp thư (mailbox) để liên hệ với các tác vụ khác.
Sơ đồ trạng thái:Các trạng thái hoạt động:-khóa(blocked): đây là trạng thái ko hoạt động của tác vụ, đang chờ 1 sự kiện xảy ra.-khi có sự kiện xảy ra, tác vụ thức dậy chuyển lên trạng thái sẵn sang(ready).-tác vụ sẽ chuyển lên trạng thái hoạt động(running) khi có quyền ưu tiên cao nhất.ở trạng thái hoạt động tác vụ thực hiện công việc của mình.Tác vụ có thể chuyển trạng thái hoạt động sang khóa trong tường hợp chờ đợi 1 sự kiện nào đó hoặc sang trạng thái sẵn sang khi có 1 tác vụ khác có mức ưu tiên cao hơnSự khác biệt giữa chiếm quyền và không chiếm quyền.Chiếm quyền:nếu 1 tác vụ với mức ưu tiên thấp đang chạy và 1 tác vụ có mức ưu tiên cao hơn đang ở trạng thái khóa thì tác vụ với mức ưu tiên cao hơn chuyển sang trạng thái sẵn sang và sau đó sang trạng thái hoạt động.Như vậy tác vụ với mức ưu tiên thấp bị chiếm quyền thực thi.Không chiếm quyền các tác vụ hoạt động theo thứ tự,khi tác vụ này chạy xong thì mới đến tác vụ khác.Việc đồng bộ được thực hiện như thế nào?Việc đồng bộ giữa các tác vụ trong hệ điều hành thời gian thực được thực hiện bằng tập hợp các dịch vụ truyền thông giữa các tác vụ.Một số cơ chế thông tin và đồng bộ hóa:-  Semaphore :được sử dụng cho việc đồng bộ và khóa tài nguyên.Về mặt chức năng semaphore hoạt động giống như một chiếc chìa khóa cho việc truy cập tài nguyên. Tác vụ vào giữ chiếc chìa khóa này mới có quyền sử dụng tài nguyên hệ thống VD: Trong trường hợp có 2 tác vụ cùng truy cập một chiếc máy in. tác vụcần yêu cầu chìa khóa (semaphore) bằng cách gọi tới một dịch vụ thích hợp.Nếu chìa khóa ở trạng thái sẵn sàng (có nghĩa là tài nguyên hiện tại đang không được sửdụng bởi tác vụ nào),tác vụ có thể được phép sử dụng tài nguyên,đồng thời chìa khóa sẽ được giữ lại.Sau khi sử dụng xong, tác vụ đó phải trả lại chìa khóa (semaphore) để các tác vụ khác có  thể sử dụng tài nguyên hệ thống. nếu tài nguyên đang được sửdụng bởi tác vụ khác, tác vụ đó sẽ bị khóa cho đến khi semaphore được trả lại.Trong trường hợp cùng một lúc có nhiều tác vụ yêu cầu semaphore khi tài nguyên hệthống đang được sửdụng thì tất cả tác vụ đó sẽ bị khóa lại.Các tác vụ bị khóa sẽ được xếp hàng theo thứ tựvề mặt ưu tiên hay về mặt thời gian theo yêu cầu semaphore
-  Cờ sự kiện (Event Flag): dung để thể hiện một hay nhiều sự kiện xảy ra.Cờ sự kiện cho phép đồng bộ khóa trong trường hợp có nhiều sự kiện kết hợp.
-  Hộp thư(mailbox): Một tác vụ(là người gửi) sẽ gửi một bản tin (message) tới hộp thư trong khi tác vụ khác (người nhận) chờbản tin tại hòm thư.Nếu không có bản tin trong hộp thư khi tác vụ nhận chờ ở hộp thư, tác vụ đó sẽ bị khóa đến khi bản tin được đưa tới.
-  Hàng đợi(queue) hay đường ống(pipe): Hàng đợi thường là hộp thưcó khảnăng chứa nhiều thư  cùng một lúc. trong cơ chế đường ống, một luồng dữliệu (byte stream) liên tục được nối giữa hai tác vụ. Một tác vụ sẽ đọc đường ống, còn một tác vụ khác ghi lên đường ống.
Hệ điều hành thời gian thực FreeRTOS: FreeRTOS là hệ điều hành thời gian thực miễn phí có tính khả chuyển mã nguồn mở, lõi đc tải miễn phí và ứng dụng trong thương mại.Hầu hết các code được viết bằng ngôn ngữ C nên phù hợp với các nhiều nền khác nhau.Ưu điểm là dung lượng nhỏ và có thể chạy trên nền phần cứng mà nhiều HĐH khác không chạy được.Có thể port cho nhiều kiến trúc vđk và những công cụ phát triển khác.
Các tính năng của FreeRTOS:-  Hai cơ chế lập lịch:Chiếm quyền: Luôn chạy tác vụ có mức ưu tiên cao hơn, các tác vụ cùng mức ưu tiên chia sẻ của CPU.Phối hợp: chỉ chuyển khi có tác vụ bị khóa hoặc gọi hàm taskYIELD.
-  Hàng đợi tin nhắn:Semaphore: đc thiết kế nhỏ đơn giản dễ sử dụng.Cấu trúc mã nguồn rất sinh động được viết bằng ng ngữ C.Hỗ trợ cả task và co-routine.Có lựa chọn nhận biết tràn ngăn xếp.ko giới hạn số task có thể tạo ra,phụ thuộc vào tài nguyên của hệ thống.Ko giới hạn số mức ưu tiên đc sử dụng.ko giới hạn số task đc ưu tiên.Hỗ trợ truyền thông và đồng bộ giữa các tác vụ và ngắt thông qua nhiều chiến lược khác nhau. Các công cụphát triển miễn phí, port cho Cortex-M3, ARM7, PIC,MSP430, H8/S, AMD, AVR, x86 và 8051... Miễn phí mã nguồn phần mềm nhúng. Miễn phí trong ứng dụng thương mại.Tiền cấu hình cho các ứng dụng thử nghiệm, từ đó dễ dàng tìm hiểu và phát triển.
Các dòng hỗ trợ VĐK: ARM Cortex-M3, Atmel AVR32 AT32UC3A: vi điều khiển flash sửdụng GCC và IAR. Các vi điện tửST: TR71x (ARM7), STR75x( ARM7), STR9 (ARM9) (STR711F, STR712F, … )….
Ưu tiên: Mức độ ưu tiên của tác vụ được đặt bằng các số, càng nhỏ càng thấp. Default idle priority is defined by tskIDLE_PRIORITY as zero. Các số của mức ưu tiên sẵn có được xác định trong FreeRTOSConfig.h.  Có thể thay đổi.Bất cứ tác vụ nào có thể chia sẻ ưu tiên giống nhau.
Cấu trúc thư mục: Từ thư mục gốc, bản download FreeRTOS gồm 2 thư mục con :
-  Demo Chứa các ứng dụng thử nghiệm.
-  Source Chứa mã nguồn của nhân. Phần lớn nhân freeRTOS (cụ thể hơn là mã nguồn của bộ lập lịch phân bổ- scheduler ) chứa trong 3 file chung với mọi kiến trúc vi xửlý là tasks.c, queue.c và list.c (hoặc thêm file croutine.c thực thi chức năng co-routines) trong thư mục Source. Mỗi kiến trúc vi xửlý sẽ yêu cầu 1 phần mã nhân nhỏ cho riêng kiến trúc đó. Mã riêng cho từng kiến trúc được nằm trong thư mục /Source/Portable. Cấu trúc thư mục khá đơn giản, và nhân FreeRTOS chỉbao gồm đúng 3 files(hay 4 file với tính năng co-routines).
Cấu trúc các file:üFreeRTOS.h : Gồm 2 phần:
 – Chứa các khai báo vềcác file header viết riêng cho từng port – Kiểm tra các khai báo cần thiết về các tham số cấu hình và các marco, thiết lập các giá trị mặc định với các tham số chưa được thiết lập giá trị cụ thể.üTask.h : Gồm các khai báo về các API liên quan đến task, chia theo.5 chức năng:
-Các API liên quan đến tạo và xóa task: -Các API điều khiển task:
 -CácAPI tiện ích cho task -Các API đkhiển nhân.-Các API liên quan đến MPU
üList.h : chứa các khai báo về các hàm và các marco liên quan đến các thủ tục tạo,xóa, thiết lập và chỉnh sửa các tham số của các task. FreeRTOS xây dựng một cấu trúc danh sách các task, mỗi task là một phần tử có cấu trúc. Đi kèm cấu trúc danh sách được sử dụng trong bộ scheduler là các API thao tác trên các phần tử của danh sách và danh sách:.
üCroutine.h : Chứa các khai báo về các hàm và các marco xây dựng các co-routine.
üPortables.h: Khai báo file header tương ứng với port sẽ được sử dụng. File header được đưa vào sẽ tương ứng với marco về bản port được sử dụng.Thêm nữa, file này cũng bao gồm các khai báo về các thủ tục quản lý bộ nhớ đối với từng port các file khác: các file của nhân cần quan tâm 2 file FreeRTOSConfig.h và portmacro.h.Trong đó FreeRTOSConfig.h chứa các tham số cấu hình phù hợp với từng port cụ thể
üportmacro.h chứa các API riêng đối với từng port như cấu hình timer, các thủ tục sao lưu và khôi phục context.
HĐH Embeded Linux : Embedded Linux là một phiên bản của hệ điều hành Linux được dùng trong các hệ thống nhúng như mobile phone, PDA, set- top box, các thiết bịđiện tửgia dụng, các thiết bị mạng, các thiết bị điều khiển,....Theo thống kê hiện có, Linux hiện được  sử dụng bởi khoảng 18% các kỹ sư nhúng.Chạy trên hệ thống với tài nguyên hạn chế ,HỗtrợReal Time ,Có các trình điều khiển riêng , bản quyền miễn phí, nhân ổn định,được hỗ trợ lớn từ công đồng mã nguồn mở, nhà phát triển được tự do thay đổi và phân phối mã nguồn, yêu cầu bộ nhớ tương đối lớn cho nhân và hệ thống file gốc, sự phức tạp trong việc truy nhập bộ nhớ ,nền tảng trình điều khiển thiết bị phức tạp.
Các đặc điểm :  •  Đa nhiệm : bộ lập lịch phân bổ trong Linux sử dụng thuật toán lập lịch preemptive trong đó một tiến trình với mức ưu tiên cao hơn sẽ được ưu tiên là tiến trình tiếp theo được CPU thực hiện khi xảy ra một sự kiện không đồng bộ.
    •  Đa người sử dụng : Linux phát triển từ Unix là một hệ thống chia sẻ theo thời gian cho phép nhiều người sử dụng chia sẻ chung một máy tính. Vì vậy có rất nhiều các chức năng hỗtrợ việc bảo vệdữliệu và tính riêng tư.  •  Đa xử lý: Linux cung cấp hỗ trợ mở rộng cho đa xử lý đối xứng SMP(Symmetric Multi-Processing).    •  Bộ nhớ được bảo vệ: Mỗi tiến trình trong Linux hoạt động trong không gian nhớ riêng của nó và không được cho phép truy cập trực tiếp đến không gian nhớ của một tiến trình khác.Điều này tránh những con trỏ lỗi trong một tiến trình gây phá hoại không gian nhớ của tiến trình khác.    •  Hệthống file phân cấp.

1 comments:

  • Unknown says:
    May 11, 2015 at 2:26 AM

    bài viêt rất hay ,nhưng bạn để front chữ nhỏ wa ,rất cám ơn bạn đã chia sẻ thông tin
    ..............................................................................
    Mr. Sỹ - Chuyên viên tư vấn giải pháp hội nghị truyền hình cho các doanh nghiệp
    Click để xem chi tiết:
    camera conference | oneking

Post a Comment