tài liệu thi cuối kì môn lập trình nhúng cho các bạn ICTU tài liệu thi cuối kì môn lập trình nhúng cho các bạn ICTU tài liệu thi cuối kì môn lập trình nhúng cho các bạn ICTU Điểm ăn chắc từ B Điểm ăn chắc từ B Điểm ăn chắc từ B Điểm ăn chắc từ B
Trang 1I Lý thuyết
1 Khái niệm về hệ thống nhúng? Cho ví dụ và phân tích các thành phần của hệ thống?
Hệ thống nhúng là một hệ thống được tích hợp cả phần cứng và phần mềm phục vụ chocác bài toán chuyên dụng trong nhiều lĩnh vực công nghiệp, tự động hóa điều khiển, quantrắc và truyền thông
Hệ thống này đòi hỏi độ ổn định và tự động hóa cao Do sử dụng cho các nhiệm vụchuyên biệt và được sản xuất với số lượng lớn nên chúng được thiết kế một cách tối ưunhằm giảm thiểu kích thước cũng như giá thành sản xuất Độ phức tạp là khác nhau theoyêu cầu của công việc mà chúng đảm nhận, hệ thống nhúng có thể rất đơn giản với một viđiều khiển hoặc 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 đượcnằm gọn trong một lớp vỏ máy lớn Đó có thể là những thiết bị cầm tay nhỏ gọn như đồng
hồ kĩ thuật số và máy chơi nhạc MP3, hoặc những sản phẩm lớn như đèn giao thông, bộkiểm soát trong nhà máy hoặc hệ thống kiểm soát các máy năng lượng hạt nhân Xét về
độ phức tạp, hệ thống nhúng có thể rất đơn giản với một vi điều khiển hoặc rất phức tạpvớ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áylớn
Các thiết bị PDA hoặc máy tính cầm tay cũng có một số đặc điểm tương tự với hệ thốngnhúng như các hệ điều hành hoặc vi xử lý điều khiển chúng nhưng các thiết bị này khôngphải là hệ thống nhúng thật sự bởi chúng là các thiết bị đa năng, cho phép sử dụng nhiềuứng dụng và kết nối đến nhiều thiết bị ngoại vi
Chúng ta có thể kể ra được rất nhiều các ứng dụng của hệ thống nhúng đang được sửdụng hiện nay, và xu thể sẽ còn tiếp tục tăng nhanh Một số các lĩnh vực và sản phẩmthị trường rộng lớn của các hệ nhúng có thể được nhóm như sau:
- Các hệ thống dẫn đường trong không lưu, hệ thống định vị toàn cầu, vệ tinh
- Các thiết bị gia dụng: tủ lạnh, lò vi sóng, lò nướng,…
- Các thiết bị kết nối mạng: router, hub, gateway,…
- Các thiết bị văn phòng: máy photocopy, máy fax, máy in, máy scan,…
- Các thiết bị y tế: máy thẩm thấu, máy điều hòa nhịp tim,…
- Các máy trả lời tự động
- Dây chuyền sản xuất tự động trong công nghiệp, robots
Trang 22 Nêu và phân tích các thành phần của một số ứng dụng của hệ thống nhúng đang được sửdụng hiện nay
3 Đặc điểm của hệ thống nhúng
Hệ thống nhúng thường có một số đặc điểm chung như sau:
• Các hệ thống nhúng được thiết kế để thực hiện một số nhiệm vụ chuyên dụng chứ khôngphải đóng vai trò là các hệ thống máy tính đa chức năng Một số hệ thống đò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ẽ, cho phép đơn giản hóa hệ thống phần cứng
để giảm thiểu chi phí sản xuất
• 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ữ trongcác chip bộ nhớ ROM hoặc bộ nhớ flash chứ không phải là trong một ổ đĩa Phần mềmthườ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ỏ, dung lượng bộ nhớ thấp Sau đây, ta sẽ đi sâu, xem xét cụ thể
đặc điểm của các thành phần của hệ thống nhúng
Giao diện
Các hệ thống nhúng có thể không có giao diện (đối với những hệ thống đơn nhiệm) 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ácthiết bị để bàn Đối với các hệ thống đơn giản, thiết bị nhúng sử dụng nút bấm, đèn LED
và hiển thị chữ cỡ nhỏ hoặc chỉ hiển thị số, thường đi kèm với một hệ thống menu đơngiản
Còn trong một hệ thống phức tạp hơn, một màn hình đồ họa, cảm ứng hoặc có các nútbấm ở lề màn hình cho phép thực hiện các thao tác phức tạp mà tối thiểu hóa đượckhoảng không gian cần sử dụng; ý nghĩa của các nút bấm có thể thay đổi theo màn hình
và các lựa chọn Các hệ thống nhúng thường có một màn hình với một nút bấm dạng cầnđiểu khiển (joystick button)
Kiến trúc CPU
Các bộ xử lý trong hệ thống nhúng có thể được chia thành hai loại: vi xử lý và vi điềukhiển Các vi điều khiển thường có các thiết bị ngoại vi được tích hợp trên chip nhằmgiảm kích thước của hệ thống Có rất nhiều loại kiến trúc CPU được sử dụng trong thiết
kế hệ nhúng như ARM, MIPS, Coldfire/68k, PowerPC, x86, PIC, 8051, Atmel AVR,Renesas H8, SH, V850, FR-V, M32R, Z80,
Trang 3Thiết bị ngoại vi
Hệ thống nhúng giao tiếp với bên ngoài thông qua các thiết bị ngoại vi, ví dụ như:
• Serial Communication Interfaces (SCI): RS-232, RS-422, RS-485
• Synchronous Serial Communication Interface: I2C, JTAG, SPI, SSC và ESSI
• Universal Serial Bus (USB)
• Networks: Controller Area Network, LonWorks
• Bộ định thời: PLL(s), Capture/Compare và Time Processing Units
• Discrete IO: General Purpose Input/Output (GPIO)
Công cụ phát triển
Tương tự như các sản phẩm phần mềm khác, phần mềm hệ thống nhúng cũng được pháttriển nhờ việc sử dụng các trình biên dịch (compilers), chương trình dịch hợp ngữ(assembler) hoặc các công cụ gỡ rối (debuggers) Tuy nhiên, các nhà thiết kế hệ thốngnhúng có thể sử dụng một số công cụ chuyên dụng như:
• Bộ gỡ rối mạch hoặc các chương trình mô phỏng (emulator)
• Tiện ích để thêm các giá trị checksum hoặc CRC vào chương trình, giúp hệ thống nhúng
có thể kiểm tra tính hợp lệ của chương trình đó
• Đối với các hệ thống xử lý tín hiệu số, người phát triển hệ thống có thể sử dụng phầnmềm workbench như MathCad hoặc Mathematica để mô phỏng các phép toán
• Các trình biên dịch và trình liên kết (linker) chuyên dụng được sử dụng để tối ưu hóamột thiết bị phần cứng
• Một hệ thống nhúng có thể có ngôn ngữ lập trình và công cụ thiết kế riêng của nó hoặc
sử dụng và cải tiến từ một ngôn ngữ đã có sẵn
Một số vấn đề cụ thể về độ tin cậy như:
• Hệ thống không thể ngừng để sửa chữa một cách an toàn, ví dụ như ở các hệ thốngkhông gian, hệ thống dây cáp dưới đáy biển, các đèn hiệu dẫn đường,… Giải pháp đưa ra
là chuyển sang sử dụng các hệ thống con dự trữ hoặc các phần mềm cung cấp một phầnchức năng
Trang 4• Hệ thống phải được chạy liên tục vì tính an toàn, ví dụ như các thiết bị dẫn đường máybay, thiết bị kiểm soát độ an toàn trong các nhà máy hóa chất,… Giải pháp đưa ra là lựachọn backup hệ thống.
• Nếu hệ thống ngừng hoạt động sẽ gây tổn thất rất nhiều tiền của ví dụ như các dịch vụbuôn bán tự động, hệ thống chuyển tiền, hệ thống kiểm soát trong các nhà máy …
4 Kiến trúc điển hình của hệ thống nhúng
Mỗi hệ thống nhúng đều có một kiến trúc thổng thể như sau:
Được tích hợp các thành phần ngoại vi trên chip để giảm kích thước hệ thống
• SoC (System on Chip)
Một vi mạch tích hợp cao, hỗ trợ đa nhân xử lý và nhiều giao tiếp trên 1 chip Giúp tăng tốc thời gian thiết kế hệ thống
Sử dụng như một mạch tích hợp cho ứng dụng cụ thể (ASIC) hoặc mạch logic khả trình (FPGA)
Trang 5* Phần mềm hệ thống
• Không bắt buộc phải có
• Device driver: UART, Ethernet, ADC…
• Hệ điều hành nhúng: eCos, ucLinux, VxWorks, Monta Vista Linux, BIOS, QNX…
• Quản lý bộ nhớ, quản lý tiến trình, quản lý chia sẽ tài nguyên
• Có thể tái sử dụng trên một hệ thống nhúng khác
* Phần mềm ứng dụng
• Không bắt buộc phải có
• Quyết định hành vi (chức năng) của một hệ thống nhúng
• Khó tái sử dụng trên một hệ thống nhúng khác
5 Phạm vi ứng dụng của hệ thống nhúng
Điện tử ô tô: Ô tô hiện đại chỉ bán được nếu chúng có một lượng đáng kể các thiết bị điện
tử Trong đó có các hệ thống điều khiển túi khí, hệ thống điều khiển động cơ, hệ thốngphanh, điều hòa nhiệt độ, hệ thống GPS, các tính năng an toàn, và nhiều nữa
Điện tử máy bay: Một phần quan trọng trong tổng giá trị của máy bay là do các thiết bị
xử lý thông tin, trong đó có các hệ thống điều khiển bay, hệ thống chống va chạm, hệthống thông tin phi công, v.v Độ tin cậy mang tầm quan trọng tối cao
Tầu hỏa: Đối với tầu hỏa, tình huống tương tự như với ô tô và máy bay Một lần nữa, các
tính năng đảm bảo an toàn đóng góp phần quan trọng trong tổng giá trị của tầu hỏa, và độtin cậy là cực kì quan trọng
Viễn thông: Điện thoại di động đã trở trành một trong những thị trường phát triển nhanh
nhất trong những năm gần đây Đối với điện thoại di động, thiết kế tần số radio, xử lí tínhiệu số và thiết kế tiết kiệm năng lượng là các khía cạnh quan trọng
Y tế: Có một tiềm năng rất lớn cho việc nâng cấp dịch vụ y tế bằng việc xử lý thông tin
ngay trong các thiết bị y tế
Quân sự: xử lý thông tin đã được dùng trong các thiết bị quân sự từ nhiều năm Thực tế,
trong số những máy tính đầu tiên là những máy tính phân tích các tín hiệu radar quân sự
Các hệ chứng thực: dùng để chứng thực người dùng Ví dụ SMARTpen là một thiết bị
hình cái bút, có chức năng phân tích các tham số vật lý khi người dùng kí tên Các tham
Trang 6số vật lý gồm độ nghiêng, lực ấn và gia tốc Các giá trị này được truyền cho một PC nơi
nó được so sánh với thông tin có sẵn về người dùng Kết quả là nó có thể so sánh ảnh chữ
kí cũng như cách kí với thông tin lưu trữ.Ngoài ra còn các hệ thống nhận dạng khuôn mặt hoặc nhận vân tay
Điện gia dụng: các thiết bị audio và video, TV, máy chơi điện tử
Tòa nhà thông minh (smart buildings): Có thể dùng tin học để tăng mức độ tiện nghi
trong tòa nhà, giảm tiêu thụ năng lượng, và tăng an toàn và bảo mật Các hệ thống convốn không liên hệ với nhau phải được kết nối để phục vụ mục đích này Có một xu hướngtới việc tích hợp điều hòa nhiệt độ, ánh sáng, kiểm soát truy nhập, kế toán và phân phốithông tin vào một hệ thống đơn nhất Ví dụ, có thể tiết kiệm năng lượng làm mát, sưởi
ấm, chiếu sáng tại các phòng trống Sử dụng mành cửa sổ một cách thông minh có thể tối
ưu hóa đèn và điều hòa nhiệt độ
Robotics: đây là lĩnh vực truyền thống của các hệ thống nhúng Các khía cạnh cơ khí rất
quan trọng đối với robot Hầu hết các đặc điểm đã được mô tả cũng áp dụng cho robotics
6 Nêu các thành phần của hệ thống nhúng
Các thành phần phần mềm hệ thống nhúng:
Trình điều khiển thiết bị: Trình điều khiển thiết bị là một thư viện phần mềm có nhiệm
vụ khởi động phần cứng, quản lý việc truy nhập tới phần cứng cả các lớp phần mềm caohơn Trình điều khiển thiết bị có vị trí trung gia giữa phần cứng và hệ điều hành, cácchương trình ứng dụng Trình điều khiển thiết bị được chia thành hai loại là architecture-specific hoặc generic
Ngắt:Ngắt là các tín hiệu được tạo ra bởi một số sự kiện trong quá trình thực thi các chỉ
thị lệnh của bộ xử lý Các ngắt có thể là không đồng bộ, với các thiết bị phần cứng ngoàinhư ngắt reset, power hoặc có thể là đồng bộ với những hoạt động liên quan đến chỉ thịlệnh như các lời gọi hàm hoặc các chỉ thị khác Những tín hiệu này khiến bộ xử lý dừnghoạt động hiện tại của dòng chỉ lệnh và khởi động thủ tục xử lý ngắt
Phần mềm xử lý ngắt trong bộ xử lý và phần cứng quản lý các ngắt thường bao gồm cáctrình điều khiển cho việc xử lý ngắt Các chức năng mà các trình điều khiển cung cấp cóthể là:
Trang 7- Interrupt Handling Startup: khởi động các ngắt cứng (ví dụ như bộ điều khiển ngắt, kíchhoạt các ngắt ) khi hệ thống khởi động hoặc reset.
- Interrupt Handling Shutdown: cấu hình các ngắt (điều khiển ngắt, ngừng kích hoạt cácngắt ) về trạng thái power off
- Interrupt Handling Disable: cho phép các phần mềm khác có thể tác động vào các ngắt(disable) Tuy nhiên không cho phép với các ngắt Non-Maskable
- Interrupt Handling Enable: cho phép các phần mềm khác có thể tác động vào các ngắt(enable)
- Interrupt Hadler Servicing: điều khiển mã lệnh của bản thân ngắt mà được thực thi ngaysau khi luồng chỉ thị lệnh chính dừng
Có ba loại ngắt chính đó là software, internal hardware và external hardware
Bộ nhớ Trong khi thực tế cấu tạo vật lý bộ nhớ là một mảng hai chiều (ma trận), mỗi một
phần tử nhớ có một địa chỉ hàng và cột duy nhất thì bộ xử lý lại coi bộ nhớ như là mộtmảng một chiều và được tham chiếu như là một Memory Map (MM) Trong MM, mỗiphần tử nhớ là một hàng các bytes, và số lượng các bytes trên mỗi hàng phụ thuộc vào độrộng của bus dữ liệu (8 bit, 16 bit, 32 bit, 64 bit ) Điều này nói theo một cách khác làphụ thuộc vào các thanh ghi của kiến trúc xử lý Khi bộ nhớ vật lý được tham chiếu từphần mềm, nó được coi là bộ nhớ logic và có phần tử nhớ là byte Bộ nhớ logic được hìnhthành từ tất cả các bộ nhớ vật lý (thanh ghi, ROM, RAM) trong toàn bộ hệ thống nhúng.Các chức năng mà trình điều khiển bộ nhớ phải cung cấp bao gồm:
- Memory Subsystem Startup: Phần khởi tạo bộ nhớ khi hệ thống được cấp nguồn hoặtreset
- Memory Subsystem Shutdown: Cấu hình lại thông tin để chuyển hệ thống nhớ vào trạngthái Power-off
- Memory Subsystem Disable: Cho phép các phần mềm khác có thể vô hiệu hóa một hệthống nhớ nào đó (ví dụ như cache)
- Memory Subsystem Enable: Cho phép các phần mềm khác có thể kích hoạt hệ thống nhớnào đó
- Memory Subsystem Write: Ghi dữ liệu vào một vùng nhớ xác định
- Memory Subsystem Read: Đọc dữ liệu từ một vùng nhớ xác định
Bus: Các giao thức Bus được cung cấp với trình điều khiển bus với các chức năng chính
Trang 8- Bus Disable: cho phép các phần mềm khác vô hiệu hóa Bus ngay lập tức
- Bus Enable: cho phép các phần mềm khác kích hoạt Bus ngay lập tưc
- Bus Acquire: cho phép các phần mềm khác có quyền sử dụng Bus
- Bus Release: cho phép các phần mềm khác giải phóng Bus
- Bus Read: cho phép các phần mềm khác đọc dữ liệu từ Bus
- Bus Write: cho phép các phần mềm khác ghi dữ liệu lên Bus
- Bus Install: cho phép các phần mềm khác được cài đặt các thiết bị để mở rộng Bus
- Bus Uninstall: cho phép các phần mềm khác được loại bỏ các thiết bị Bus
* Hệ điều hành thời gian thực
Thời gian thực có nghĩa “đủ nhanh” (fast enough) trong một ngữ cảnh, một môi trường
mà hệ thống đang hoạt động
Hệ điều hành thời gian thực – RealTime Operating Systems(RTOS), là phần mềm điều
khiển chuyên dụng thường được dùng trong những ứng dụng điện toán nhúng có tài nguyên bộ nhớ hạn chế và yêu cầu ngặt nghèo về thời gian đáp ứng tức thời, tính sẵn sàngcao và khả năng tự kiểm soát một cách chính xác
Một thuộc tính quan trọng của RTOS là khả năng tách biệt với ứng dụng, vì vậy nếu cómột chương trình bị "chết" hay hoạt động không hợp lệ, RTOS có thể nhanh chóng cô lậpchương trình này, kích hoạt cơ chế phục hồi và bảo vệ các chương trình khác hay chínhbản thân hệ điều hành khỏi các hậu quả của các lệnh sai
Tùy theo cơ chế thực hiện và xây dựng hoạt động của hạt nhân người ta phân loại một sốloại hình:
• Hệ thống thời gian thực nhỏ: Với loại này các phần mềm được phát triển mà không cần có
hệ điều hành, người lập trình phải tự quản lý và xử lý các vấn đề về điều khiển hệ thốngbao gồm:
Xử lý ngắt, Điều khiển quá trình/ tác vụ, Quản lý bộ nhớ , Công nghệ đa nhiệm, Mỗi quátrình có một không gian bộ nhớ riêng, Các quá trình phải được chia nhỏ thành các Threadcùng chia sẻ không gian bộ nhớ, Các dịch vụ cung cấp bởi hạt nhân, Tạo và kết thúc quátrình/ tác vụ, Truyền thống giữa các quá trình , Các dịch vụ về định thời gian
*Middleware và các phần mềm ứng dụng
a) Middleware
Trong hầu hết các trường hợp, middleware là bất kỳ hệ thống phần mềm nào mà khôngphải là hệ điều hành, trình điểu khiển thiết bị hoặc phần mềm ứng dụng Tóm lại, trong
Trang 9một hệ thống nhúng, middleware là hệ thống phần mềm tồn tại trên trình điều khiển thiết
bị hoặc trên hệ điều hành và có thể được tích hợp vào hệ điều hành
Middleware thường là phần mềm trung gian giữa phần mềm ứng dụng và kernel hoặcdevice driver Middleware cũng là phần mềm cung cấp các hàm dịch vụ cho các ứng dụngphần mềm khác Cụ thể hơn, middleware là một lớp phần mềm được sử dụng bởi các thiết
bị nhúng với các ứng dụng phần mềm với mục đích tạo ra sự linh hoạt, tính an ninh, liênkết giữa các ứng dụng Một trong những mục đích chính sử dụng middleware là cho phépgiảm độ phức tạp của ứng dụng Middleware tác động đến mọi lớp của hệ thống nhúng
Có rất nhiều loại middleware
Tuy nhiên, hầu hết các loại middleware đều rơi vào một trong hai dạng sau:
- General Purpose: chúng được cài đặt trong nhiều loại thiết bị khác nhau, ví dụ như cácgiao thức mạng bên trên tầng device driver và bên dưới tầng ứng dụng trong mô hìnhOSI, các hệ thống file hoặc các dạng máy ảo như JVM
- Market specific: chúng được phát triển cho một họ hệ thống nhúng nào đó, ví dụ như các
7 Quy trình thiết kế Top- Down
Pha phân tích: Pha này là pha quan trọng nhất quyết định hệ thống có đạt yêu cầu hay không Một
hệ thống nhúng cụ thể phải được đặt vào (nhúng vào) một hệ thống lớn cụ thể Vì thế ta cần phải biết
có những yêu cầu nào cho nó, môi trường hay điều kiện làm việc của nó Thông tin này gọi là các yêu cầu và các điều kiện rằng buộc cho hệ thống, nó giúp cụ thể hoá được việc chọn giải pháp công nghệ và thiết bị cho các kỹ sư thiết kế ở pha sau.
Trang 10- Các yêu cầu: Các thông tin chi tiết về nhiệm vụ mà hệ thống phải giải quyết
được, các tham số đầu vào đầu ra, các giới hạn trong hệ thống cụ thể,
- Các rằng buộc: Điều kiện làm việc và các hạn chế như thời tiết, độ ẩm, độnhiễu, độ chính xác, tính thời gian thực, loại tín hiệu giao tiếp với hệ thốngmẹ,
Pha thiết kế nguyên lý:Mục tiêu của pha này là xác định các giải pháp công nghệ từ các yêu cầu đặt
ra ở pha Phân tích, từ đó đi thiết kế mô hình, sơ đồ nguyên lý cho toàn bộ hệ thống bao gồm cả phần cứng và phần mềm.
Để thực hiện bước này thông thường trải qua các bước sau:
- Trước tiên ta phải xây dựng một sơ đồ mô hình tổng quát của toàn hệ thống
- Sau đó phân tách thành các module hay các hệ thống con
- Định giá cho hệ thống, lập kế hoạch phát triển và ước lượng thời gian pháttriển hệ thống
- Xây dựng các sơ đồ luồng dữu liệu giữa các module hay các hệ thống controng hệ thống
Pha thiết kế kỹ thuật
+ Xây dựng các thiết kế chi tiết cho cả phần cứng phần mềm, các bản thiết kế này sẽđược chuyển sang pha thực thi để xây dựng hệ thống Vì thế ở pha này người thiết kếphải đưa ra các bản thiết kế như:
1 Sơ đồ khối, sơ đồ thuật toán
2 Cấu trúc dữu liệu, dữ liệu chia sẻ
3 Sơ đồ nguyên lý mạch, chi tiết về các đầu vào/ra, loại tín hiệu hay giao thứcgiao tiếp
4 Thông số linh kiện được chọn hoặc có thể thay thế
5 Các tham số vào/ra cho hệ thống
6 Lựa chọn thiết bị, công cụ phát triển hệ thống, các tài nguyên sẽ sử dụng
7
+ Xây dựng sơ đồ quan hệ giữa các module và các hàm trong hệ thống (call graph), sơ
đồ này mô tả cách thức tương tác giữa phần cứng và phần mềm trong hệ thống
Pha xây dựng hệ thống: Từ các bản thiết kế, bước này tiến hành xây dựng hoàn thiện hệ thống trên cả phân mềm và phần cứng Trong suốt quá trình xây dựng phải tuân thủ theo các bước và sơ đồ
Trang 11công nghệ từ các bản thiết kế kỹ thuật Đặc biệt là các tham số vào ra giữa các hàm, điều này ảnh hưởng đến việc tích hợp các module giữa các nhóm làm việc khác nhau hay sự kế thừa từ các module khác Các linh kiện và thiết bị sử dụng phải tuân thủ theo bản thiết kế, nhằm giúp hệ thống thỏa mãn đầy đủ các thông số rằng buộc đã được đặt ra ở pha phân tích.
Việc phát triển hệ thống có thể được phân tách thành nhiều nhóm, nhiều phần khôngcần tuân theo tuần tự, hoặc có thể trên nhiều môi trường khác nhau miễn sao đảm bảoviệc trao đổi tham số giữa các module là tương thích và đầy đủ Nếu chúng ta phân tách
và thiết kế tốt, việc phát triển hệ thống có thể được tiến hành song song, hoặc kếthừa cái có sẵn, sẽ làm giảm thời gian phát triển hệ thống đáng kể mà vẫn đảm bảo cácyêu cầu đã đặt ra
Một số các kỹ thuật nhằm phát hiện và hạn chế lỗi mà người phát triển có thể áp dụngtrong pha này là Debug hay mô phỏng Simulation Tuy nhiên trong một bài toán cụ thểviệc Debug là rất khó, thông thường người phát triển luôn sử dụng một trình mô phỏng(Simulation) với các phép thử trên các tín hiệu giả lập
Pha kiểm tra
Mục tiêu của pha này là đánh giá khả năng thực thi của hệ thống sau khi đã hoànthiện, thông thường ta thực hiện các bước sau:
• Đầu tiên ta tiến hành gỡ lỗi (debug) và kiểm định cho từng chức năng cơ bảncủa hệ thống
• Tiếp theo đánh giá khả năng thực thi của hệ thống dựa trên nhiều tiêu chí khácnhau như: Tốc độ, độ chính xác, tính ổn định,…
Ngày nay rất nhiều công ty trên nhiều lĩnh vực tuyển dụng nhân sự riêng cho pha nàygọi là testing hay các tester Nhiệm của của các Tester không chỉ là kiểm các tính năngcủa sản phẩm có phù hợp với các yêu cầu đã đề ra hay không, mà còn phải nghĩ ra cáctình huống, các mẫu,… để tìm ra các lỗi mà người thiết kế hay người phát triển chưaphát hiện ra được
Các thông tin kết quả của bước này quyết định một sản phẩm có thể được thương mại hóa hay không, hay phải bắt đầu một chu kỳ mới với pha đầu tiên là pha phân tích bao gồm các thông tin mới thu thập được từ bước này
8 Quy trình thiết kế Bottom-Up
Trang 12Quy trình Bottom-Up trong thực tế thường áp dụng trong các bài toán chưa lựa chọnhay chưa tìm ra được giải pháp công nghệ Mấu chốt của quy trình tập trung chủ yêu vàquá trình thử nghiệm với hệ thống và tín hiệu thực, từ đó chọn ra giải pháp côngnghệ và linh kiện phù hợp nhất cho bài toán Sơ đồ tổng quát của quy trình như hình 5.Quy trình Bottom-Up bắt đầu từ các ý tưởng đơn lẻ, sau đó xây dựng luôn thiết kế kỹthuật Như ta thấy quy trình hoàn toàn ngược so với Top-Down Quy trình này thường
áp dụng có các bài toán chưa lắm chắc về lời giải, người thiết kế mới chỉ có ý tưởng vềmột vấn đề nào đó và muốn tìm một giải pháp hoặc giải pháp tốt nhất để giải quyết vấn
đề Việc giải quyết các ý tưởng có thể 1 hoặc nhiều để có một sản phẩm hoàn chỉnh
Ở quy trình này ta cần chú ý có 2 khâu test nhằm kiểm định chính xác lại các thiết kế kỹthuật và thiết kế nguyên lý trước khi lựa chọn 1 giải pháp tối ứu nhất
Chính từ việc thí nghiệm và thiết kế thử hệ thống trước, sau đó mới có thể phân tíchnguyên lý để chọn các đặc tính mới, rằng buộc mới cho một hệ thống mới Với quytrình này khâu thiết kế kỹ thuật và Test sau khi xây dựng hệ thống là quan trọng nhất
Vì với Top-Down việc xây dựng một sản phẩm là theo nhu cầu của người dùng và môitrường đặt hệ thống Còn với Bottom-Up có thể người ta còn chưa tìm ra cách để thiết
kế ra sản phẩm đó, hoặc sản phẩm đó chưa hề có trên thị trường, khi đó cả ngườidùng và người thiết kế chưa thể có thông tin gì về các yêu cầu cho sản phẩm hay các đặttính kỹ thuật của sản phẩm, vì vậy khâu thiết kế kỹ thuật và Test sau thực thi các kỹ
sư phải tìm ra các đặt tính đó, nhằm xác định được các ưu việt cũng như các hạn chếcủa sản phẩm mới
9 So sánh quy trình thiết kế Top- Down và quy trình thiết kế Bottom-Up
Top-Down việc xây dựng một sản phẩm là theo nhu cầu của người dùng và môi trườngđặt hệ thống Còn với Bottom-Up có thể người ta còn chưa tìm ra cách để thiết kế ra sảnphẩm đó, hoặc sản phẩm đó chưa hề có trên thị trường, khi đó cả người dùng và ngườithiết kế chưa thể có thông tin gì về các yêu cầu cho sản phẩm hay các đặt tính kỹ thuậtcủa sản phẩm, vì vậy khâu thiết kế kỹ thuật và Test sau thực thi các kỹ sư phải tìm racác đặt tính đó, nhằm xác định được các ưu việt cũng như các hạn chế của sản phẩmmới
Trang 1310 Trình bày các đặc tính, phương pháp thiết kế và xu thế phát triển của hệ thống nhúng
Các hệ nhúng là những hệ kết hợp phần cứng và phần mềm một cách tối ưu Các hệnhúng là những hệ chuyên dụng, thường hoạt động trong chế độ thời gian thực, bị hạnchế về bộ nhớ, giá thành phải rẻ nhưng lại phải hoạt động tin cậy và tiêu tốn ít nănglượng Các hệ nhúng rất đa dạng và có nhiều kích cỡ, khả năng tính toán khác nhau.Ngoài ra các hệ nhúng thường phải hoạt động trong môi trường khắc nghiệt có độnóng ẩm, rung xóc cao Ví dụ như các điều khiển các máy diesel cho tàu biển, các thiết
bị cảnh báo cháy nổ trong hầm lò Các hệ thống nhúng lớn thường là các hệ nối mạng
Ở máy bay, tàu vũ trụ thường có nhiều mạng nhúng kết nối để kiểm soát hoạt động vàđiều khiển.Trong ô tô hiện đại có đến trên 80 nút mạng kết nối các đầu đo cơ cấu chấphành để bảo đảm ô tô hoạt động an toàn và thoải mái cho người sử dụng
Thiết kế các hệ thống nhúng là thiết kế phần cứng và phần mềm phối hợp Cách thiết kế
cổ điển là cách xác định trước các chức năng phần mềm (SW) và phần cứng (HW) rồisau đó các bước thiết kế chi tiết được tiến hành một cách độc lập ở hai khối Hiện nay
đa số các hệ thống tự động hóa thiết kế (CAD) thường dành cho thiết kế phần cứng.Các hệ thống nhúng hiện nay sử dụng đồng thời nhiều công nghệ như vi xử lý, DSP,mạng và các chuẩn phối ghép, protocol, do vậy xu thế thiết kế các hệ nhúng hiện nayđòi hỏi có khả năng thay đổi mềm dẻo hơn trong quá trình thiết kế 2 phần HW và
SW Để có được thiết kế cuối cùng tối ưu, quá trình thiết kế SW và HW phải phối hợpvới nhau chặt chẽ và có thể thay đổi sau mỗi lần thử chức năng hoạt động tổng hợp.Thiết kế các hệ nhúng đòi hỏi kiến thức đa ngành về điện tử, xử lý tín hiệu, vi xử lý,thuật điều khiển và lập trình thời gian thực
Phần mềm trong các hệ nhúng ngày càng chiếm tỉ trọng cao và đã trở thành một thànhphần cấu tạo nên thiết bị bình đẳng như các phần cơ khí, linh kiện điện tử, linh kiệnquang học các hệ nhúng ngày càng phức tạp hơn đáp ứng các yêu cầu khắt khe vềthời gian thực, tiêu ít năng lượng, hoạt động tin cậy ổn định hơn, có khả năng hộithoại cao, có khả năng kết nối mạng, có thích nghi, tự tổ chức cao có khả năng tái cấuhình như một thực thể, một tác nhân
Và có khả năng tiếp nhận năng lượng từ nhiều nguồn khác nhau (ánh sáng, rung động,điện từ trường, sinh học .) để tạo nên các hệ thống tự tiếp nhận năng lượng trong
Trang 14quá trình họat động.
Tuy nhiên hệ thống nhúng hiện nay còn phải đối mặt với nhiều thách Độ phức tạp của
hệ thống tăng cao do nó kết hợp nhiều lĩnh vực đa ngành, kết hợp phần cứng - mềm,trong khi các phương pháp thiết kế và kiểm tra chưa chín muồi Khoảng cách giữa lýthuyết và thực hành lớn và còn thiếu các phương pháp và lý thuyết hoàn chỉnh cho khảosát phân tích toàn cục của hệ nhúng bao gồm lý thuyết điều khiển tự động, thiết kếmáy, công nghệ phần mềm, điện tử, vi xử lý, các công nghệ hỗ trợ khác Mặt khác các
hệ nhúng còn nhiều vấn đề cần giải quyết với độ tin cậy và tính mở của hệ thống Do
hệ thống nhúng thường phải hội thoại với môi trường xung quanh nên nhiều khi gặpnhững tình huống không lường trước dễ dẫn đến hệ thống bị loạn Trong quá trình hoạtđộng một số phần mềm thường phải chỉnh lại và thay đổi nên hệ thống phần mềm cóthể không kiểm soát được Đối với hệ thống mở, các hãng thứ 3 đưa các modulemới, thành phần mới vào cũng có thể gây nên sự hoạt động thiếu tin cậy
Trang 15II Bài tập
Bài 1: Cho sơ đồ mạch như hình sau:
Hệ thống bao gồm:
+ Vi xử lý AT89C51
+ 1 LED đơn được nối với chân P2.0
+ Cổng COM được kết nối đến chân P3.0 (RXD) và chân P3.1 (TXD)
Yêu cầu:
Sử dụng ngôn ngữ lập trình (lập trình trên Keil C) viết chương trình điều khiển hệ thống với các yêu cầu:
- Gửi một kí tự ra cổng nối tiếp, mỗi lần gửi xong một ký tự thì bật LED đơn tại chận P2.1
- Gửi 1 chuỗi kí tự ra cổng nối tiếp, mỗi lần 1 kí tự được gửi đi thì bật LED đơn tại chậnP2.1
Trang 16Bài 2: Cho sơ đồ mạch sau:
Hệ thống bao gồm:
+ Vi xử lý AT89C51
+ 8 LED đơn được nối với cổng P1
+ Cổng COM được kết nối đến chân P3.0 (RXD) và chân P3.1 (TXD)
Trang 17Bài 3: Cho sơ đồ mạch điện sau:
Hệ thống bao gồm:
+ Vi xử lý AT89C51
+ 2 LED 7 thanh được nối tới cổng P0 và chân P2.0, P2.1
+ Bàn phím được nối tới cổng P3
Trang 18Bài 4: Cho sơ đồ mạch sau:
a Sáng lần lượt từ LED 1 đến LED 8 trễ cách nhau 1s
b Sáng dần đều từ LED 1 đến LED 8 (trễ 0.5s)
c 8 LED sáng nhấp nháy cách nhau 1s
#include <REGX51.H>
//===============================================================
========================
// 8 led don noi cong P1 Cac hieu ung trong bai
// - hieu ung sang dan, delay 1s
// - hieu ung sang tu giua sang hai ben, delay 0.5s
Trang 19// - hieu ung nhap nhay, delay 1s
int dem;
unsigned char hieuUngSangDan[] = { 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F,
0x7E, 0x7D, 0x7B, 0x77, 0x6F, 0x5F, 0x3F,
0x3E, 0x3D, 0x3B, 0x37, 0x2F, 0x1F,
0x1E, 0x1D, 0x1B, 0x17, 0x0F, 0x0E, 0x0D, 0x0B, 0x07, 0x06, 0x05, 0x03,
0x02, 0x01, 0x00, 0xFF};
unsigned char hieuUngTatDan[] = {0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF};
unsigned char hieuUngPhaiTrai[] = {0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD,
Trang 20========================
//=========Ham tao tre ======================
void delay(int time){
int i = 0;
TMOD = 0x10;//Timer 1, che do 1
for(i = 0; i < time; i++){
TF1 = 0;//khoi dong bo dinh thoi
//gia tri can nap FC18 su dung tan so thach anh 12
//=========sang NHAP NHAY do tre 1s ======================
void blink(int lan){
int i;
for(i=0; i<lan; i++){
P1 = 0x00;
delay(1000);
Trang 21//=========sang tu GIUA sang HAI BEN do tre 0.5s ======================
void mid_haiBen(int lan){
//=========sang tu TRAI sang PHAI======================
void sangDan(int lan){
int i, j;
for(i=0; i<lan; i++){
for(j = 0; j < 37; j++){
P1 = hieuUngSangDan[j];
Trang 22//=========sang Lan Luot ======================
void lanLuot(int lan){
Trang 23void leftRight(int lan){
//=========sang tu PHAI sang TRAI======================
void rightLeft(int lan){
Trang 24========================
//=========sang tu HAI BEN sang GIUA======================
void haiBen_mid(int lan){