Menu English Ukrainian Tiếng Nga Trang Chủ

Thư viện kỹ thuật miễn phí cho những người có sở thích và chuyên gia Thư viện kỹ thuật miễn phí


ENCYCLOPEDIA VỀ ĐIỆN TỬ TRUYỀN THANH VÀ KỸ THUẬT ĐIỆN
Thư viện miễn phí / Sơ đồ của các thiết bị vô tuyến-điện tử và điện

Vi điều khiển cho người mới bắt đầu và hơn thế nữa. Bách khoa toàn thư về điện tử vô tuyến và kỹ thuật điện

Thư viện kỹ thuật miễn phí

Bách khoa toàn thư về điện tử vô tuyến và kỹ thuật điện / Bộ vi điều khiển

Bình luận bài viết Bình luận bài viết

CUỘC GẶP ĐẦU TIÊN

Đầu tiên, một vài từ dành cho những người mà chủ đề của chu kỳ, xét theo tiêu đề của nó, có vẻ như không thú vị hoặc "xa lạ". Có lẽ bạn chưa sử dụng vi điều khiển trong thiết kế của mình (sau đây gọi tắt là MK) và bạn nghĩ rằng trong tương lai gần, bạn sẽ có thể làm được mà không cần chúng. Cũng có thể bạn cho rằng việc xây dựng một hệ thống vi điều khiển để giải quyết vấn đề của bạn sẽ quá cồng kềnh và không khả thi về mặt kinh tế. Đừng vội vàng: đặc biệt đối với bạn, chúng tôi muốn đưa ra một vài sự thật và một số thống kê.

Ví dụ: chúng ta hãy lấy người họ hàng gần nhất của MK - một chiếc máy tính cá nhân - và so sánh cường độ sử dụng của chúng. Theo hãng phân tích Loewenbaum & Co. Inc. (Mỹ), số lượng máy tính cá nhân phát hành trên thế giới năm 1997 đạt xấp xỉ 20 triệu chiếc. Đồng ý, điều này là rất nhiều. Bây giờ hãy tưởng tượng rằng con số khổng lồ này chỉ bằng 0,2% sản lượng MK toàn cầu. Theo công ty phân tích IC Insights Inc. (Mỹ) thị trường thế giới năm 1998 đã hấp thụ hơn 13,5 tỷ người trong số họ!

Kết luận cho thấy chính nó. Nếu ngay cả ngày nay thật khó để tìm thấy một lĩnh vực hoạt động của con người mà máy tính không được sử dụng hiệu quả, thì chúng ta có thể nói gì về MK? Tại sao chúng lại trở nên phổ biến và không thể thiếu theo đúng nghĩa đen? Câu trả lời nằm trong chính cấu trúc của vi điều khiển. Như một sự gần đúng đầu tiên đối với định nghĩa của khái niệm này, chúng ta có thể giả định rằng MC là một máy tính nằm trong một vi mạch đơn lẻ. Do đó, những phẩm chất hấp dẫn chính của nó: kích thước nhỏ, mức tiêu thụ, giá cả; hiệu suất cao, độ tin cậy và khả năng thích ứng để thực hiện nhiều nhiệm vụ khác nhau.

MK khác với bộ vi xử lý ở chỗ, ngoài bộ xử lý trung tâm (CPU), nó còn chứa bộ nhớ và nhiều thiết bị đầu vào / đầu ra: bộ chuyển đổi tương tự sang số, kênh thông tin nối tiếp và song song, bộ hẹn giờ thời gian thực, độ rộng xung bộ điều biến (PWM), bộ tạo xung có thể lập trình, v.v. Về cấu tạo và nguyên lý hoạt động, MK về bản chất không khác một máy tính cá nhân. Do đó, các từ vi điều khiển và máy vi tính là đồng nghĩa. Tuy nhiên, thuật ngữ đầu tiên (từ điều khiển từ tiếng Anh - quản lý) phổ biến hơn, vì nó phản ánh mục đích chính của nó - sử dụng trong các hệ thống điều khiển tự động được tích hợp trong nhiều loại thiết bị: thẻ tín dụng, máy ảnh, điện thoại di động, dàn âm thanh nổi, TV, VCR và máy quay phim, máy giặt, ô tô, lò vi sóng, hệ thống báo trộm, hệ thống đánh lửa động cơ xăng, truyền động điện đầu máy, lò phản ứng hạt nhân, và nhiều, nhiều hơn nữa. Các hệ thống điều khiển nhúng đã trở thành một hiện tượng đại chúng đến mức một nhánh mới của nền kinh tế đã thực sự được hình thành, được gọi là Hệ thống nhúng (hệ thống nhúng - tiếng Anh).

Hiện nay, hàng ngàn giống MK được sản xuất trên thế giới. Chúng được cung cấp trong các gói có 8 đến 356 chân, hoạt động ở nhiệt độ từ -55 đến +125oC ở tần số từ 32 kHz đến 200 MHz, có khả năng hoạt động ở điện áp nguồn 1,2 V, trong khi tiêu thụ dòng điện không quá vài microampe . . Giá thành sản phẩm cũng không ngừng giảm. Một số MCU 50 bit ngày nay có giá không quá XNUMX xu, tương đương với giá của một chip "logic cứng".

Tất cả điều này đã dẫn đến thực tế là ngày nay càng khó tìm thấy một lĩnh vực hoạt động của con người mà MC không tìm thấy ứng dụng và quá trình phân phối của chúng có đặc điểm giống như tuyết lở.

Chúng tôi hy vọng rằng những sự thật trên đã giúp bạn có thái độ tôn trọng đối với nhân vật chính trong câu chuyện của chúng ta. Thật vậy, MC đã trở thành một sự kiện toàn cầu, xâm nhập vào hầu hết các loại hình hoạt động của con người.

Điều gì đã tạo ra sự tăng trưởng nhanh chóng như vậy về mức độ phổ biến của những sản phẩm xuất hiện cách đây hơn 25 năm một chút? Những thiết bị này là gì và khả năng và triển vọng của chúng là gì?

Nếu bạn chưa sử dụng MC hoặc các hệ thống dựa trên chúng trong các hoạt động của mình, thì. có lẽ đó là thời gian để suy nghĩ về nó? Và nếu bạn quyết định áp dụng MK, thì chuỗi hành động của bạn sẽ như thế nào? Những khó khăn nào có thể chờ đợi bạn, điều gì có thể giúp bạn trên đường đi?

Chúng tôi sẽ cố gắng trả lời những câu hỏi này trong loạt bài viết được đề xuất.

ĐỊNH LUẬT MOORE VÀ MK ĐẦU TIÊN

Trở lại năm 1965, Gordon Moore, một trong những người sáng lập tương lai của Tập đoàn Intel hùng mạnh, đã thu hút sự chú ý đến một sự thật thú vị. Sau khi lập biểu đồ về sự tăng trưởng hiệu suất của chip bộ nhớ, ông đã phát hiện ra một mô hình thú vị: các mẫu chip mới xuất hiện sau mỗi 18 đến 24 tháng và dung lượng của chúng tăng gấp đôi sau mỗi lần. Nếu xu hướng này tiếp tục, G. Moore gợi ý, thì sức mạnh của các thiết bị máy tính sẽ tăng theo cấp số nhân trong một khoảng thời gian tương đối ngắn.

Dự đoán của G. Moore sau đó đã được xác nhận một cách xuất sắc và mô hình mà ông phát hiện ra được quan sát thấy ngày nay với độ chính xác đáng kinh ngạc, là cơ sở cho nhiều dự báo về tăng trưởng năng suất. Trong 28 năm đã trôi qua kể từ khi bộ vi xử lý 4004 ra đời (1971), số lượng bóng bán dẫn trên một con chip đã tăng hơn 12 lần: từ 000 lên 2 trong chip Sorrettué.

Chà, vào năm 1976, sự phát triển theo cấp số nhân của công nghệ bán dẫn đã dẫn đến việc Intel tạo ra MK - 8048 đầu tiên. Ngoài CPU, nó còn có bộ nhớ chương trình, bộ nhớ dữ liệu, bộ hẹn giờ 27 bit và 8048 dòng I / O. Ngày nay, 1980 đã là lịch sử, nhưng sản phẩm tiếp theo, được Intel phát hành vào năm 8051, vẫn còn tồn tại và phát triển tốt. Đây là MKXNUMX.

KIẾN TRÚC MK 8051

MK này có thể được coi là một mô hình cổ điển, trong hình ảnh và chân dung mà nhiều sản phẩm khác đã được tạo ra sau này. Sơ đồ khối của nó được hiển thị trong hình. 1. CPU - nút chính của MK. Nó được liên kết với một khái niệm quan trọng như một hệ thống chỉ huy.

Bộ vi điều khiển cho người mới bắt đầu và hơn thế nữa

Bộ hướng dẫn là một bộ mã nhị phân duy nhất dành riêng cho một CPU nhất định xác định danh sách tất cả các hoạt động có thể có của nó. Mỗi mã như vậy xác định một thao tác và được gọi là mã thao tác hoặc lệnh. Càng nhiều mã được sử dụng trong tập lệnh, CPU càng có thể thực hiện nhiều thao tác hơn. MK 8051 là 8-bit, vì vậy các mã lệnh của nó có kích thước 256 bit. Về mặt lý thuyết, có thể có tổng cộng 8051 opcode 255-bit. XNUMX sử dụng XNUMX.

Tùy thuộc vào số lượng mã hoạt động được sử dụng, các hệ thống hướng dẫn được chia thành hai nhóm: CISC và RISC. Thuật ngữ CISC có nghĩa là một hệ thống lệnh phức tạp và là chữ viết tắt của định nghĩa tiếng Anh của Máy tính tập lệnh phức tạp. Tương tự, thuật ngữ RISC có nghĩa là tập lệnh rút gọn và có nguồn gốc từ tiếng Anh Reduced Instruction Set Computer. Hệ thống chỉ huy MK 8051 có thể được quy cho loại C15C.

Tuy nhiên, bất chấp việc sử dụng rộng rãi các khái niệm này, phải thừa nhận rằng bản thân các tên gọi không phản ánh sự khác biệt chính giữa hệ thống chỉ huy CISC và RISC. Ý tưởng chính của kiến ​​trúc RISC là lựa chọn cẩn thận các tổ hợp mã hoạt động như vậy có thể được thực thi trong một chu kỳ của bộ tạo xung nhịp. Lợi ích chính từ cách tiếp cận này là sự đơn giản hóa mạnh mẽ việc triển khai phần cứng của CPU và khả năng tăng đáng kể hiệu suất của nó.

Ban đầu, chỉ có thể thực hiện cách tiếp cận như vậy bằng cách giảm đáng kể tập hợp các lệnh, do đó cái tên RISC đã ra đời. Ví dụ, tập lệnh của MK thuộc họ Microchir PIC chỉ bao gồm 35 lệnh và có thể được phân loại là RISC. Rõ ràng, trong trường hợp chung, một số lệnh của kiến ​​trúc RISC phải tương ứng với một lệnh của kiến ​​trúc CISC. Tuy nhiên, hiệu suất đạt được từ kiến ​​trúc RISC thường lớn hơn các tổn thất từ ​​tập lệnh kém hiệu quả hơn, dẫn đến hiệu quả tổng thể của hệ thống RISC cao hơn so với CISC. Vì thế. lệnh nhanh nhất MK 8051 được thực hiện trong 12 chu kỳ. Ngay cả khi ba lệnh của bộ điều khiển RISC cần được thực thi cho mỗi lệnh, thì cuối cùng, kiến ​​trúc RISC sẽ mang lại hiệu suất tăng gấp bốn lần.

Đồng thời, kiến ​​trúc RISC cho phép bạn giải quyết một số nhiệm vụ. Thật vậy, với việc đơn giản hóa CPU, số lượng bóng bán dẫn cần thiết để triển khai nó giảm đi, do đó, diện tích của tinh thể giảm đi. Điều này dẫn đến giảm chi phí và tiêu thụ điện năng.

Đến đây, người ta có thể thốt lên: tương lai thuộc về kiến ​​trúc RISC! Tuy nhiên, ranh giới giữa hai khái niệm này đang nhanh chóng bị xóa nhòa. Ví dụ. Các MCU thuộc họ AVR của Atmel có bộ hướng dẫn gồm 120 lệnh, tương ứng với loại CISC. Tuy nhiên, hầu hết chúng được thực thi trong một chu kỳ, đây là đặc điểm nổi bật của kiến ​​trúc RISC. Ngày nay, người ta thường chấp nhận rằng tính năng chính của kiến ​​trúc RISC là thực hiện các lệnh trong một chu kỳ của bộ tạo xung nhịp. Số lượng lệnh tự nó không còn quan trọng nữa.

Bộ tạo xung nhịp tạo xung để đồng bộ hóa hoạt động của tất cả các nút của thiết bị. Tần số lặp lại của chúng có thể được đặt bằng bộ cộng hưởng thạch anh hoặc mạch RC được kết nối với đầu ra của MK. Trong một số MK, chế độ hoạt động của bộ tạo xung nhịp được cung cấp mà không cần sử dụng các phần tử bên ngoài. Trong trường hợp này, tần số của các xung đồng hồ phụ thuộc vào các tham số của tinh thể, được xác định trong quá trình sản xuất.

ROM là thiết bị bộ nhớ chỉ đọc được thiết kế để lưu trữ các chương trình, vì vậy bộ nhớ này thường được gọi là bộ nhớ mã hoặc bộ nhớ chương trình. Cho đến gần đây, có hai loại ROM chính - mặt nạ và có thể lập trình.

Thông tin được nhập vào ROM mặt nạ trong quá trình sản xuất MC bằng cách sử dụng các mẫu công nghệ - mặt nạ. Nó không thể thay đổi sau khi kết thúc chu kỳ sản xuất.

Những ROM như vậy chỉ được sử dụng trong trường hợp chất lượng của chương trình không còn nghi ngờ gì nữa và có nhu cầu lớn về MK với chương trình cụ thể này. Ưu điểm của ROM mặt nạ là chi phí sản xuất hàng loạt thấp nhất (từ vài nghìn chiếc).

Thông tin ROM có thể lập trình được ghi bằng một thiết bị được gọi là bộ lập trình. MK với các ROM như vậy có hai loại: có thể lập trình một lần và nhiều lần (có thể lập trình lại). Cái đầu tiên, như chính tên gọi, chỉ cho phép lập trình một lần, sau đó không thể xóa thông tin được nữa (MK với bộ nhớ OTP - từ tiếng Anh. Có thể lập trình một lần). Chúng được sử dụng trong sản xuất quy mô nhỏ (tối đa 1000 chiếc). khi việc sử dụng mặt nạ MK không hợp lý về mặt kinh tế.

Các vi mạch có thể lập trình lặp đi lặp lại được chia thành MK được trang bị ROM có chức năng xóa bằng tia cực tím (có sẵn trong các gói có "cửa sổ") và MK với bộ nhớ có thể lập trình lại bằng điện. Nhược điểm của MC với ROM có xóa bằng tia cực tím là chi phí rất cao và số chu kỳ ghi / xóa tương đối nhỏ (phụ thuộc vào tổng liều chiếu xạ tinh thể và thường không vượt quá 15 ... 20)

Hiện tại, một công nghệ mới để triển khai ROM ngày càng trở nên phổ biến - bộ nhớ Flash. Ưu điểm chính của nó là rằng nó được xây dựng trên nguyên tắc lập trình lại điện. tức là, nó cho phép xóa và ghi nhiều thông tin bằng cách sử dụng các lập trình viên. Số chu kỳ ghi/xóa được đảm bảo tối thiểu thường vượt quá vài nghìn. Điều này làm tăng đáng kể vòng đời và tăng tính linh hoạt của hệ thống MC. vì nó cho phép bạn thực hiện các thay đổi đối với chương trình MC cả ở giai đoạn phát triển hệ thống và trong quá trình hoạt động trên thiết bị thực.

RAM là bộ nhớ truy cập ngẫu nhiên dùng để lưu trữ dữ liệu nên bộ nhớ này còn được gọi là bộ nhớ dữ liệu. Số chu kỳ đọc và ghi trong RAM không bị giới hạn, nhưng khi tắt điện áp cung cấp, tất cả thông tin sẽ bị mất.

Kiến trúc của MK 8051 liên quan đến việc sử dụng riêng bộ nhớ chương trình và dữ liệu và được gọi là Harvard. Thông thường, kiến ​​trúc này được sử dụng để cải thiện hiệu suất hệ thống bằng cách tách các đường dẫn truy cập bộ nhớ dữ liệu và chương trình, nhưng trong 8051, nó được sử dụng để đạt được bộ nhớ dữ liệu và chương trình không yêu cầu cùng kích thước. Phản cực của Harvard - kiến ​​trúc von Neumann - liên quan đến việc lưu trữ các chương trình và dữ liệu trong bộ nhớ dùng chung và điển hình nhất cho các bộ vi xử lý được thiết kế để sử dụng trong máy tính. Một ví dụ là họ bộ vi xử lý x86.

Bộ định thời TO, T1 là các bộ định thời/bộ đếm có thể lập trình mười sáu bit có thể được lập trình để thực hiện nhiều chức năng khác nhau. Chúng có thể được sử dụng để hình thành chính xác các khoảng thời gian, đếm các xung ở đầu ra của MK, tạo thành một chuỗi các xung, tạo xung nhịp cho bộ thu phát của kênh giao tiếp nối tiếp. Bộ định thời/bộ đếm có khả năng tạo các yêu cầu ngắt, chuyển đổi CPU để phục vụ chúng theo các sự kiện và giải phóng nó khỏi nhu cầu thăm dò định kỳ trạng thái của các bộ định thời. Do ứng dụng chính của MK được tìm thấy trong các hệ thống thời gian thực nên bộ định thời/bộ đếm là thành phần không thể thiếu của chúng. Trong một số sửa đổi, số lượng bộ hẹn giờ lên tới 32.

Cổng nối tiếp là kênh trao đổi thông tin giữa MK và thế giới bên ngoài. Các kênh liên lạc như vậy chiếm số lượng chân tinh thể tối thiểu, cung cấp khả năng liên lạc qua khoảng cách đáng kể với chi phí phần cứng tối thiểu. 8051 triển khai bộ thu phát nối tiếp không đồng bộ phổ quát (UART) hỗ trợ giao thức chuẩn RS-232C, giúp tổ chức giao tiếp giữa MK này và máy tính cá nhân. Ngoài RS-232C, giao thức phổ biến nhất trong thế giới hệ thống nhúng là RS-485. I2C (xe buýt hai chiều hai dây). SPI (Giao diện ngoại vi nối tiếp XNUMX dây). Bitbus (bus điều khiển nối tiếp), CAN (giao diện mạng liên bộ điều khiển), USB (bus nối tiếp vạn năng) và một số loại khác. Đối với hầu hết mọi loại kênh nối tiếp, ngày nay bạn có thể tìm thấy MK có cổng nối tiếp tương ứng trong thành phần của nó.

Các cổng I/O song song cũng là một phần thiết yếu của bất kỳ MCU nào. Thông thường chúng được sử dụng để giao tiếp với môi trường trực tiếp - cảm biến và cơ cấu chấp hành.

Một tính năng quan trọng của các cổng song song MK là khả năng được lập trình để thực hiện một số chức năng. Ví dụ, trên 8051, các chân cổng P0 và P2 có thể được sử dụng như các thanh ghi I/O tĩnh thông thường hoặc như một bus địa chỉ và dữ liệu để kết nối các thiết bị bên ngoài như bộ nhớ chương trình bổ sung, bộ nhớ dữ liệu, thiết bị I/O. Điều này mang lại sự linh hoạt cho kiến ​​trúc MK. Cổng RXNUMX có thể được sử dụng làm thanh ghi I/O tĩnh hoặc thực hiện các chức năng đặc biệt cho hoạt động của kênh nối tiếp, bộ hẹn giờ, bộ điều khiển ngắt, v.v. Khả năng lập trình lại cho phép bạn sử dụng tất cả các đầu ra của MC trong thiết bị được thiết kế với hiệu quả tối đa.

Hệ thống ngắt là một trong những phần quan trọng nhất của MK. Một tính năng của các hệ thống thời gian thực là đối với chúng, một tham số cực kỳ quan trọng là thời gian phản hồi đối với các sự kiện bên ngoài. Hãy giải thích bằng một ví dụ đơn giản. Khi bạn thực hiện một phép tính trên máy tính, bạn thường chạy một chương trình được thiết kế để thực hiện các phép tính này và sau khi chương trình được tải vào bộ nhớ của máy tính, hãy nhập câu lệnh bài toán và đợi kết quả. Thời gian chờ đợi trong trường hợp này không có tầm quan trọng cơ bản (tất nhiên là có lý do) - máy tính hoạt động chậm có thể gây khó chịu, nhưng điều này sẽ không ảnh hưởng đến kết quả. Hệ thống thời gian thực giả định một tốc độ phản ứng của hệ thống điều khiển đối với các sự kiện bên ngoài rất cụ thể, được tính toán ở giai đoạn phát triển. Sự chậm trễ ngoài những gì đã tính toán ở đây đơn giản là không thể chấp nhận được - chúng có thể dẫn đến những hậu quả thảm khốc.

Các vấn đề về phản ứng nhanh với các sự kiện được giải quyết bằng cách tổ chức một hệ thống ngắt. Nó ngụ ý rằng đối với mỗi sự kiện như vậy, một "đoạn mã" riêng biệt được phát triển, tạo thành phản ứng của MK đối với nó. "Đoạn mã" này được gọi là quy trình yêu cầu ngắt (thuật ngữ quy trình ngắt thường được sử dụng cho ngắn gọn) và được đặt trong bộ nhớ chương trình tại một địa chỉ đã biết. Tại thời điểm xảy ra một sự kiện nhất định, một tín hiệu về điều này được gửi đến đầu vào của bộ điều khiển ngắt. Cái sau là một thiết bị thiết lập sự tương ứng một-một giữa tín hiệu đầu vào về một sự kiện đã xảy ra và địa chỉ bộ nhớ chương trình mà tại đó điểm vào của quy trình xử lý yêu cầu ngắt từ sự kiện này được định vị. Bộ điều khiển làm gián đoạn quá trình thực thi chương trình hiện tại của CPU và bắt đầu quá trình chuyển đổi của nó sang quá trình thực thi chương trình phục vụ ngắt. Thời gian trôi qua kể từ thời điểm xảy ra sự kiện đến khi bắt đầu thực hiện lệnh đầu tiên của quy trình ngắt được gọi là thời gian phản hồi của MC đối với sự kiện. Sau khi xử lý xong, CPU tự động quay lại thực hiện chương trình bị ngắt.

Một chức năng khác của bộ điều khiển ngắt là ưu tiên các sự kiện. Khái niệm về mức độ ưu tiên có nghĩa là một chương trình ngắt đang chạy chỉ có thể bị gián đoạn bởi một sự kiện khác nếu nó có mức ưu tiên cao hơn chương trình hiện tại. Nếu không, CPU sẽ chuyển sang xử lý một sự kiện mới sau khi xử lý xong sự kiện trước đó. Bộ điều khiển ngắt, là một phần của MK 8051, có năm đầu vào sự kiện: hai từ thiết bị bên ngoài, hai từ bộ hẹn giờ và một từ kênh nối tiếp.

Thông thường, khi họ nói về bất kỳ MK nào, họ luôn đề cập đến gia đình mà nó thuộc về. Một họ bao gồm các sản phẩm có cùng lõi, được hiểu là một tập hợp các khái niệm như hệ thống hướng dẫn, sơ đồ trình tự hoạt động của CPU, tổ chức bộ nhớ chương trình và bộ nhớ dữ liệu, hệ thống ngắt và bộ thiết bị ngoại vi cơ bản . Trên thực tế, trong Hình. 1 cho thấy lõi đã trở thành cơ sở để tạo ra hàng trăm sửa đổi khác của họ 8051.

Sự khác biệt giữa các đại diện khác nhau của nó chủ yếu nằm ở thành phần của các thiết bị ngoại vi và dung lượng bộ nhớ chương trình hoặc dữ liệu. Vì phạm vi nhiệm vụ được giải quyết bởi MK. vô cùng rộng rãi, các nhà sản xuất của họ đang cố gắng tung ra càng nhiều sửa đổi để đáp ứng nhu cầu đa dạng nhất của người tiêu dùng. Trong nhiều gia đình, số lượng sửa đổi đạt tới hàng trăm hoặc thậm chí vượt quá giá trị này.

Tính năng quan trọng nhất của họ là khả năng tương thích phần mềm ở cấp mã nhị phân của tất cả các MK có trong đó. Điều này cho phép các nhà phát triển hệ thống thay thế một họ vi điều khiển bằng những họ khác mà không làm mất đi sự phát triển phần mềm của họ. Đương nhiên, số lượng giống trong họ càng nhiều thì càng có nhiều khả năng chọn phương án tốt nhất, họ này càng hấp dẫn đối với nhà phát triển. Câu hỏi về sự lựa chọn đúng đắn của họ MC cho sự phát triển mới là một vấn đề chiến lược, vì vấn đề chuyển giao phần mềm giữa các sản phẩm của các họ khác nhau là vô cùng phức tạp và thậm chí việc sử dụng các ngôn ngữ cấp cao không phải lúc nào cũng cho phép giải quyết nó mà không có tổn thất lớn. Chúng tôi sẽ trở lại vấn đề tiêu chí lựa chọn trong các bài viết sau của chu kỳ.

Phát triển chương trình là một trong những giai đoạn quan trọng nhất trong việc tạo ra một thiết bị dựa trên MK. Không có nó, anh ta "chết", không phản ứng với các tác động bên ngoài và không phát tín hiệu điều khiển.

Khi bật nguồn, MCU ngay lập tức bắt đầu thực thi chương trình nằm trong bộ nhớ chương trình (thường là ROM) được kết nối với nó. Việc thực thi của nó bắt đầu từ một số địa chỉ cố định, thường là bằng không. Một địa chỉ đơn giản là một số ô ROM Quá trình này diễn ra như sau: MCU đọc một số được lưu trong bộ nhớ chương trình và tùy thuộc vào giá trị của nó, được gọi là mã máy, thực hiện một số hành động nhất định trên nội dung của các thanh ghi ALU. bộ nhớ, cổng, v.v. Ví dụ, bằng cách đọc số 32H từ bộ nhớ chương trình. MK "hiểu" rằng bạn cần đọc giá trị từ cổng đầu vào số 2 và đặt nó vào thanh ghi tích lũy. Thường thì một byte là không đủ để mô tả hành động và sau đó MK đọc các byte bổ sung từ bộ nhớ.

Sau khi thực hiện hành động, MK đọc giá trị từ ô nhớ tiếp theo theo thứ tự, v.v. Tập hợp các byte mô tả một hành động do MK thực hiện được gọi là lệnh máy (lệnh) và tập hợp các lệnh đó mà MK “ hiểu”. - hệ thống lệnh hay tập lệnh (Instruction Set) của nó. Các MK thuộc các họ khác nhau có hệ thống lệnh khác nhau, tức là mã máy của chúng có ý nghĩa khác nhau, mặc dù chúng thực hiện các hành động tương tự.

Vì vậy, chương trình dành cho MK là một dãy số, các giá trị của chúng cho biết những hành động cần thực hiện. Kết quả của việc phát triển một chương trình là một tệp máy tính chứa các mã máy này. Với sự trợ giúp của một lập trình viên ROM, nó được nhập (“khâu lên”) vào bộ nhớ chương trình MK.

Làm thế nào là thành phần của chuỗi mã máy này - một chương trình cho MK? Nhà phát triển có thực sự cần nhớ các giá trị của mã máy và đặt trình tự của chúng theo cách thủ công không? Các chương trình đầu tiên cho MK được tạo theo cách này. và nó được gọi là lập trình bằng mã máy. Rõ ràng là cách phát triển chương trình này rất tốn thời gian và không hiệu quả.

Bước đầu tiên để tạo thuận lợi cho quá trình tạo chương trình là một chương trình máy tính - cái gọi là trình dịch từ ngôn ngữ lắp ráp. Ý tưởng là thể hiện các hành động do MK thực hiện bằng ngôn ngữ dễ đọc hơn của con người và sau đó chuyển đổi các biểu thức này thành mã máy. Trong ví dụ trên, hướng dẫn máy đọc giá trị của cổng 2 và đặt nó vào bộ tích lũy, hành động được thực hiện có thể được ký hiệu đại khái là MOV A.P2.

Ở đây, từ MOV (từ tiếng Anh di chuyển), được gọi là lệnh ghi nhớ, biểu thị việc chuyển một giá trị và A và P2, được gọi là toán hạng, cho biết nơi lấy giá trị và đặt nó ở đâu. Ký hiệu này được gọi là hợp ngữ. chương trình viết trên đó. được xử lý bởi một trình dịch để chuyển đổi cấu trúc hợp ngữ thành mã máy.

Lập trình hợp ngữ được phổ biến rộng rãi cho đến ngày nay. Trình dịch hợp ngữ cho tất cả các họ vi điều khiển phổ biến đều miễn phí.

Mặc dù có những ưu điểm rõ ràng của việc lập trình trong trình biên dịch mã chương trình so với lập trình bằng mã máy, nhưng trong nhiều trường hợp, trình biên dịch mã không đủ hiệu quả để thực hiện các nhiệm vụ của nhà phát triển. Thực tế là MK chỉ có thể thực hiện các phép toán đơn giản nhất như phép toán số học trên số nguyên, chuyển, so sánh, v.v. Đối với các tác vụ phức tạp hơn, chẳng hạn như phép toán trên số dấu phẩy động, các nhà phát triển phải viết các quy trình đặc biệt gây bất tiện cho dụng.và cồng kềnh. Bước tiếp theo trong quá trình phát triển các chương trình cho MK là tạo ra các chương trình máy tính đặc biệt - trình dịch từ ngôn ngữ lập trình cấp cao hoặc trình biên dịch. Ngôn ngữ lập trình được sử dụng rộng rãi nhất là C.

Với sự ra đời của các dịch giả, việc phát triển các chương trình cho MK đã được đơn giản hóa đáng kể. Ví dụ, nếu bạn cần cộng hai số trong chương trình, thì bây giờ chỉ cần viết a = b + c là đủ. và trình biên dịch chuyển biểu thức này thành chuỗi lệnh máy cần thiết tùy thuộc vào các loại biến a, b và c.

Việc sử dụng ngôn ngữ cấp cao cho phép nhà phát triển trừu tượng hóa hệ thống lệnh của một bộ vi điều khiển cụ thể và vận hành theo các danh mục đơn giản và dễ hiểu hơn đối với một người. Nhà phát triển chỉ cần biết kiến ​​trúc chung của vi điều khiển. nguyên tắc hoạt động của các thiết bị ngoại vi nhúng cần thiết để giải quyết các nhiệm vụ và kỹ năng lập trình bằng ngôn ngữ C. Nội dung chức năng của chương trình được thực hiện bằng các công cụ ngôn ngữ C. trong đó chứa một số lượng lớn các chương trình con (hàm) khác nhau: số học, để làm việc với các chuỗi ký tự và nhiều chương trình khác.

Xem xét quá trình tạo chương trình cho MK bằng ngôn ngữ C. Quá trình phát triển sẽ yêu cầu một máy tính cá nhân.

Sau khi hiểu nhiệm vụ, nhà phát triển viết mã nguồn của chương trình của mình bằng ngôn ngữ C bằng bất kỳ trình soạn thảo văn bản nào. Sau đó nó chạy chương trình dịch C. chuyển đổi văn bản nguồn thành tệp đối tượng trung gian. Trình dịch được điều khiển bởi một bộ khóa (có thể tìm thấy mô tả của chúng trong tài liệu của nó) được chỉ định trên dòng lệnh của nó. Nếu nhà phát triển mắc lỗi cú pháp trong khi viết chương trình, trình dịch sẽ hiển thị danh sách lỗi trên màn hình với chỉ báo cho từng số dòng trong tệp văn bản nguồn. Nhà phát triển phải sửa tất cả các lỗi. Sau khi dịch thành công, các tệp đối tượng phải được xử lý bởi trình liên kết (linker), trình tạo tệp chương trình ở dạng mã máy.

Có một vấn đề khi sử dụng ngôn ngữ cấp cao. Trình biên dịch chịu trách nhiệm chuyển đổi cấu trúc ngôn ngữ thành mã máy và việc chuyển đổi này có thể được thực hiện với các mức độ hiệu quả khác nhau. Tiêu chí hiệu quả là kích thước của mã máy (tất nhiên càng nhỏ càng tốt) và tốc độ của mã máy. Nhiệm vụ tạo mã nhỏ gọn và nhanh chóng là rất khó và chất lượng tổng thể của trình biên dịch phụ thuộc vào giải pháp của nó. Trình biên dịch C hiện đại sử dụng tối ưu hóa đa cấp, các tính năng kiến ​​​​trúc của một MK cụ thể, cho phép bạn tạo các chương trình hỗn hợp trong đó một số chương trình con được viết bằng trình biên dịch mã chương trình.

Quá trình được mô tả trông khá rườm rà: nhà phát triển phải khởi chạy các chương trình khác nhau theo cách thủ công (trình soạn thảo văn bản, trình biên dịch C, trình liên kết để ghi nhớ các phím điều khiển, tìm kiếm lỗi trong chương trình theo số dòng trong tệp. Bước mới nhất cho đến nay để hỗ trợ công việc của nhà phát triển chương trình cho MK là sự xuất hiện của môi trường phát triển tích hợp (Môi trường phát triển tích hợp. IDE). Môi trường phát triển tích hợp là một chương trình máy tính liên kết tất cả các giai đoạn phát triển chương trình với nhau. Nó kết hợp một trình soạn thảo văn bản để viết mã nguồn, trình dịch từ trình biên dịch chương trình hợp ngữ và C, trình liên kết, trình gỡ lỗi, thông tin tham khảo về MK và các công cụ khác cần thiết cho nhà phát triển. Cấu hình của trình dịch, trình liên kết và các thành phần khác được thực hiện không phải bằng cách chỉ định các công tắc trên dòng lệnh mà ở dạng hộp thoại trong đó bạn chỉ cần đánh dấu vào các ô ở đúng nơi. .

Sự xuất hiện của môi trường phát triển phần mềm tích hợp càng làm tăng hiệu quả của việc tạo chương trình cho MC, cho phép nhà phát triển tập trung vào bản chất của vấn đề đang được giải quyết và trừu tượng hóa các chi tiết cụ thể của quá trình triển khai.

Các gói phát triển phần mềm tích hợp được sản xuất bởi một số công ty. Các gói từ các nhà sản xuất khác nhau có chức năng tương tự nhau, nhưng khác nhau về khả năng dịch vụ, tính dễ sử dụng và chất lượng của mã máy được tạo.

Các đặc điểm chính của bộ công cụ phát triển phổ biến nhất được trình bày trong bảng.

Bộ vi điều khiển cho người mới bắt đầu và hơn thế nữa
(bấm vào để phóng to)

GỠ LỖI BIỂU TƯỢNG CỦA CHƯƠNG TRÌNH CHO MK

Với những trường hợp ngoại lệ hiếm hoi, các chương trình dành cho MK, do có lỗi, không bắt đầu hoạt động ngay lần đầu tiên và yêu cầu gỡ lỗi. Các nhà phát triển giải quyết các vấn đề gỡ lỗi theo nhiều cách khác nhau. Một số người trong số họ tin rằng chỉ cần phân tích kỹ văn bản nguồn, dùng máy hiện sóng xem điều gì đang xảy ra trên đầu ra MK là đủ và tất cả các lỗi đều có thể được sửa. Phương pháp này có thể áp dụng nếu nhà phát triển có nhiều kinh nghiệm, biết rõ MK được sử dụng và có trình dịch luôn tạo mã chính xác (thường là trình biên dịch mã chương trình) và đủ thời gian.

Những người khác sử dụng trình theo dõi gỡ lỗi tự chế trong thực tế - bộ chương trình con đặc biệt được tải vào MK cùng với chương trình chính. Cái sau gọi các chương trình con giám sát tại các điểm kiểm tra và chúng cung cấp thông tin về trạng thái của tài nguyên MK. Hầu như bất kỳ chương trình nào cũng có thể được gỡ lỗi theo cách này, nhưng nó có những hạn chế đáng kể. Đầu tiên, màn hình gỡ lỗi phải được cung cấp một phần tài nguyên MC cho công việc: ít nhất là một phần không gian địa chỉ của mã và một số ô ngăn xếp nhất định, và tối đa, cũng là một phần của RAM và thiết bị ngoại vi. các thiết bị của MC. được màn hình sử dụng để hiển thị thông tin. Có thể khó phân bổ tài nguyên cho màn hình gỡ lỗi nếu bản thân chương trình chính đang tích cực tải MK. Ví dụ: PIC 16С5х (Microchip) MK chỉ có hai ô ngăn xếp và rất khó sử dụng các cuộc gọi chương trình con theo dõi gỡ lỗi. Thứ hai, các cuộc gọi giám sát chiếm thời gian từ chương trình chính và do đó, nó không thể được gọi từ các phần quan trọng về thời gian của chương trình. Thứ ba, bản thân việc tạo một màn hình gỡ lỗi cũng cần có thời gian.

Cách hiệu quả nhất để gỡ lỗi chương trình cho MK là sử dụng các công cụ gỡ lỗi chuyên nghiệp chuyên dụng, bao gồm trình gỡ lỗi giả lập và trình giả lập trong mạch.

Trước khi nói về các khả năng được cung cấp bởi các trình gỡ lỗi như vậy, cần phải đề cập đến việc lựa chọn trình biên dịch, với sự trợ giúp của văn bản nguồn của chương trình được chuyển đổi thành mã máy. Trong phần lớn các trường hợp, nên lập trình bằng ngôn ngữ cấp cao. Việc sử dụng trình biên dịch chương trình là cần thiết nếu các yêu cầu rất nghiêm ngặt được áp đặt đối với kích thước và tốc độ của mã được tạo. Hiện tại, những trường hợp như vậy ngày càng ít đi, vì bạn hầu như luôn có thể sử dụng MK "nhanh hơn" với nhiều bộ nhớ hơn. Ngoài ra, các gói công cụ chéo hiện đại giúp dễ dàng viết các chương trình hỗn hợp, trong đó một số mô-đun được viết bằng C. và các bộ phận quan trọng nhất về hiệu suất nằm trong trình biên dịch chương trình. Trình biên dịch C cũng cho phép chèn hướng dẫn hợp ngữ vào mã nguồn.

Những lợi thế của lập trình trong C so với lập trình trong trình biên dịch mã chương trình là gì? Tóm lại, chúng như sau:

  • không cần lo lắng khi vận hành với số lượng lớn. Trình biên dịch sẽ tự động tạo mã chính xác cho thao tác a+b. nếu a và b là các số 8-, 16-, 32 bit, số dấu phẩy động và số chẵn thuộc các loại khác nhau;
  • Trình biên dịch đi kèm với một thư viện hàm (chương trình con) phong phú thực hiện các phép toán khác nhau (hàm lượng giác, lũy thừa, v.v.). làm việc với chuỗi ký tự, đầu vào/đầu ra được định dạng, v.v.;
  • nhiều lỗi của lập trình viên được trình biên dịch chẩn đoán: ví dụ: nó không cho phép bạn truyền sai số lượng tham số hoặc sai loại tham số cho một hàm, quên đặt câu lệnh trả về, v.v.;
  • mã nguồn viết bằng C dễ đọc hơn, gọn nhẹ hơn, dễ sửa đổi hơn;
  • chương trình viết bằng C. dễ dàng chuyển sang MK của các gia đình khác.

Để gỡ lỗi hiệu quả các chương trình được viết bằng ngôn ngữ cấp cao, nhà phát triển phải có sẵn các công cụ gỡ lỗi cung cấp đủ cơ hội để hiển thị dữ liệu được sử dụng trong chương trình, cũng như để theo dõi việc thực thi chương trình từ mã nguồn của nó . Hai điều kiện là cần thiết để điều này có thể xảy ra:

  • trình biên dịch phải cung cấp đầy đủ thông tin về cấu trúc của chương trình và dữ liệu mà nó sử dụng. Thông tin này được gọi là tượng trưng (gỡ lỗi);
  • trình gỡ lỗi phải có khả năng diễn giải thông tin này. Tất cả các trình biên dịch và trình hợp dịch hiện đại đều tạo ra thông tin tượng trưng ở dạng này hay dạng khác, nhưng chưa có định dạng chung nào được phát triển và mỗi trình biên dịch tạo ra nó ở định dạng riêng. Điều này tạo thêm khó khăn cho người gỡ lỗi, những người phải có khả năng "hiểu" nhiều định dạng ký tự.

Bây giờ, hãy xem xét cách trình gỡ lỗi diễn giải thông tin tượng trưng và những tùy chọn nào sẽ được cung cấp cho người dùng liên quan đến điều này.

THEO DÕI VIỆC THỰC HIỆN CHƯƠNG TRÌNH THEO VĂN BẢN NGUỒN

Nói chung, một dòng văn bản nguồn được trình biên dịch chuyển đổi thành một số lệnh máy. Ngay cả một chương trình hợp ngữ hầu như luôn chứa các macro mở rộng thành một số hướng dẫn bộ xử lý khi được dịch. Thật bất tiện khi gỡ lỗi một chương trình như vậy bằng cách sử dụng trình phân tách mã của nó, vì vậy trình biên dịch sẽ chèn một bảng số dòng vào thông tin gỡ lỗi. Nó chứa thông tin về sự tương ứng của số dòng văn bản nguồn và tên tệp văn bản nguồn với các địa chỉ tuyệt đối của mã chương trình. Trình gỡ lỗi hiển thị mã nguồn của chương trình trên màn hình. theo bảng này, nó có thể thực thi chương trình "từng dòng một", thực hiện trong một bước tất cả các lệnh máy do trình biên dịch tạo ra cho dòng hiện tại.

Bảng số dòng cũng cho phép bạn thực hiện các hành động theo ngữ cảnh với văn bản chương trình, chẳng hạn như thực thi nó "đến con trỏ", tức là đến vị trí do người dùng chỉ định trong văn bản nguồn, đặt điểm ngắt trên các dòng đã chỉ định, v.v. thuận tiện vì nhà phát triển không cần biết các địa chỉ tương ứng với các dòng của văn bản nguồn: chính trình gỡ lỗi sẽ xác định chúng từ bảng. Trình gỡ lỗi cũng phải "biết" địa chỉ của các chương trình con, hàm và nhãn mã và có thể tìm thấy văn bản nguồn của hàm theo tên của nó.

HIỂN THỊ DỮ LIỆU SỬ DỤNG TRONG CHƯƠNG TRÌNH BẠN GỠ LỖI

Để gỡ lỗi đầy đủ, nhà phát triển cần có khả năng xem dữ liệu do chương trình thao tác bất kỳ lúc nào. Trình gỡ lỗi phải "có khả năng" hiển thị bất kỳ dữ liệu nào được chương trình sử dụng theo cách phù hợp nhất.

Theo quy định, các nhà phát triển sử dụng dữ liệu được đặt tên trong các chương trình, nghĩa là mỗi đối tượng được sử dụng trong chương trình đều được đặt tên. Các đối tượng có thể có độ phức tạp khác nhau - từ các ô nhớ đơn giản đến các cấu trúc phức tạp của ngôn ngữ cấp cao như cấu trúc, mảng, v.v.

DỮ LIỆU TRONG CHƯƠNG TRÌNH LẮP RÁP

Các chương trình hợp ngữ chủ yếu sử dụng dữ liệu đơn giản, tức là các ô nhớ. Mảng cũng được sử dụng. Để hiển thị chính xác dữ liệu đơn giản, trình gỡ lỗi cần "biết":

  • tên của môn học:
  • địa chỉ của đối tượng trong bộ nhớ;
  • Không gian địa chỉ MK chứa đối tượng. Nhiều bộ vi điều khiển có nhiều hơn một vùng dữ liệu. Ví dụ, họ MCS-51 có bộ nhớ dữ liệu bên trong, bộ nhớ dữ liệu bên ngoài và không gian bit;
  • độ bit của đối tượng, tức là số byte mà nó chiếm giữ. Bộ vi điều khiển 16 bit, chẳng hạn như các thành viên của họ MCS-96, "biết cách" vận hành 8-. 16-. dữ liệu 32 bit. Một điểm quan trọng phải được lưu ý ở đây. Đối với nhà phát triển, kích thước logic của đối tượng là bao nhiêu là quan trọng. Ví dụ, MK tám bit của họ PIC (Microchip) chỉ hoạt động theo byte. Ví dụ, nếu cần phải có bộ đếm 16 bit trong chương trình, thì mỗi byte phải được thao tác riêng. Nhưng khi gỡ lỗi, lập trình viên không muốn xem riêng từng byte của bộ đếm mà cả hai byte cùng một lúc, ở dạng biến 16 bit. Những người lắp ráp chéo phổ biến không cung cấp cơ hội như vậy. Ngoại lệ là trình biên dịch chéo PASM-PIC của Fiton, cho phép bạn khai báo trong dữ liệu chương trình về kích thước của byte, một từ, một từ kép, cũng như các mảng của các đối tượng đó. Khi gỡ lỗi các chương trình được viết bằng PASM-PIC. tất cả các đối tượng được hiển thị ở dạng tương ứng với kích thước và cấu trúc hợp lý của chúng;
  • phạm vi của đối tượng. Nếu chương trình bao gồm một số mô-đun, lập trình viên có cơ hội bản địa hóa phạm vi của tên trong một mô-đun. Do đó, trong các mô-đun khác nhau có thể có các đối tượng có cùng tên nhưng khác các thuộc tính khác. Trình gỡ lỗi cần "tìm ra" đối tượng nào đang hoạt động và hiển thị chính xác đối tượng đó. Tuy nhiên, lưu ý rằng việc sử dụng cùng tên trong các mô-đun khác nhau thường dẫn đến nhầm lẫn và sai sót. Nếu đối tượng được khai báo toàn cầu (PUBLIC) và hiển thị trong tất cả các mô-đun, thì không có khó khăn gì trong việc diễn giải.

Với thông tin trên, trình gỡ lỗi sẽ, sau khi nhận được tên của đối tượng từ người dùng, hiển thị giá trị của nó theo loại. Các trình gỡ lỗi "cao cấp" nhất có thể hiển thị thêm phần còn lại của các thuộc tính của đối tượng.

DỮ LIỆU TRONG CHƯƠNG TRÌNH BẰNG NGÔN NGỮ CẤP CAO

Việc hiển thị các đối tượng được sử dụng trong ngôn ngữ cấp cao khó khăn hơn nhiều do sự đa dạng về cấu trúc đối tượng, cách chúng được lưu trữ trong bộ nhớ và phạm vi. Ví dụ: chúng tôi sẽ sử dụng ngôn ngữ C, ngôn ngữ phổ biến nhất đối với các nhà phát triển.

CƠ CẤU ĐỐI TƯỢNG

Ngoài các biến đơn giản có độ dài khác nhau, các chương trình C còn sử dụng các biến dấu chấm động, cấu trúc (struct), hợp hoặc hiệp (union), con trỏ, mảng một chiều và nhiều chiều. Cái sau có thể bao gồm cả đối tượng đơn giản và đối tượng phức tạp (cấu trúc, liên kết, con trỏ).

Sử dụng các đối tượng phức tạp trong các chương trình chắc chắn là thuận tiện. Tuy nhiên, do sự phức tạp trong cấu trúc của chúng, rất mong muốn có thể hiển thị đầy đủ nó ở giai đoạn gỡ lỗi. Trong trình gỡ lỗi của Fiton, các đối tượng phức tạp có thể được hiển thị cả ở dạng nén (danh sách các giá trị phần tử) và ở dạng mở rộng, cho biết địa chỉ, giá trị và loại của từng phần tử mảng và/hoặc thành phần cấu trúc. Việc triển khai con trỏ trong các trình biên dịch khác nhau là khác nhau. Thực tế là MK thường có một số không gian địa chỉ tạo thêm khó khăn, vì khi làm việc với con trỏ, ngoài địa chỉ, phải biết không gian địa chỉ mà con trỏ trỏ tới. Trong một số triển khai, mã định danh không gian địa chỉ là một phần của giá trị con trỏ; trong những triển khai khác, trình biên dịch "biết trước" điều này và tạo mã thích hợp.

Ngoài ra, thành phần địa chỉ trong một con trỏ có thể có kích thước từ 8 đến 32 bit. Khi hiển thị các giá trị con trỏ, trình gỡ lỗi phải "biết" tất cả các chi tiết về việc triển khai chúng trong mỗi trình biên dịch.

CÁC PHƯƠNG PHÁP ĐỊNH VỊ CÁC ĐỐI TƯỢNG TRONG BỘ NHỚ

Ngoài các đối tượng tĩnh, địa chỉ của chúng không thay đổi trong quá trình thực thi chương trình, trong chương trình được viết bằng ngôn ngữ cấp cao, có thể có cái gọi là đối tượng tự động, bộ nhớ được cấp phát tạm thời trong ngăn xếp MK . Địa chỉ của các đối tượng như vậy không phải là tuyệt đối, nhưng được xác định động ở giai đoạn thực hiện chương trình. Chúng thường được đo từ giá trị hiện tại của một số biến tĩnh được gọi là con trỏ khung ngăn xếp (Con trỏ cơ sở hoặc BP). Vì giá trị của BP được chương trình tạo động trong thời gian chạy, nên giá trị của các đối tượng tự động chỉ khả dụng trong phạm vi của chúng, nghĩa là với giá trị BP hợp lệ. Trình gỡ lỗi, khi hiển thị giá trị của các đối tượng tự động, phải "biết" cách xác định địa chỉ, cũng như theo dõi tính đúng đắn của giá trị BP

Cũng có thể đặt tạm thời các biến trong thanh ghi MK. Trong trường hợp này, trình sửa lỗi phải "biết" biến nào được đặt trong thanh ghi nào và trong bao lâu. Và cuối cùng, thường xảy ra tình huống khi cùng một đối tượng trong suốt thời gian tồn tại của nó thay đổi cách đặt đối tượng đó trong bộ nhớ và hơn một lần. Ví dụ, điều này có thể xảy ra khi một hàm nhận một hoặc nhiều tham số trong các thanh ghi và sau đó đẩy chúng vào ngăn xếp.

TRƯỜNG ĐỐI TƯỢNG TẦM NHÌN

Như trong các chương trình hợp ngữ, các chương trình C có các đối tượng toàn cầu có thể truy cập theo tên từ bất kỳ mô-đun nào và các đối tượng được bản địa hóa trong mô-đun (các đối tượng này được khai báo là tĩnh). Tuy nhiên, các biến đăng ký và tự động khiến trình gỡ lỗi khó hiển thị giá trị của chúng hơn. Sự thật là. thứ nhất, thời gian tồn tại của một đối tượng tự động bị giới hạn bởi phạm vi của nó và thứ hai, các phạm vi kèm theo có thể có các đối tượng tự động của riêng chúng có cùng tên. Hãy minh họa điều này bằng một ví dụ về hàm có nhiều phạm vi lồng nhau:

Bộ vi điều khiển cho người mới bắt đầu và hơn thế nữa

Biến có tên "a" tồn tại miễn là hàm f đang được thực thi, nhưng tùy thuộc vào phần nào của hàm đang được thực thi, tên "a" là viết tắt của các biến khác nhau. Khi truy tìm hàm f, tùy thuộc vào biến nào đang hoạt động, trình gỡ lỗi phải hiển thị chính xác giá trị của nó.

Khi tạo một chương trình, nhà phát triển không quan tâm đến các chi tiết về việc triển khai các khái niệm mà anh ta đã sử dụng trong chương trình. Về các danh mục "được cấp", anh ấy thường không nghi ngờ rằng các nhà phát triển trình biên dịch và trình gỡ lỗi đã gặp khó khăn như thế nào khi triển khai chúng. Cái sau phải giải quyết vấn đề kết hợp đồng thời một giao diện đơn giản và trực quan, vô số chức năng và nghiên cứu chi tiết về mọi thứ liên quan đến việc triển khai các tính năng kiến ​​​​trúc và hoạt động của một MK cụ thể. Nếu trình gỡ lỗi không cung cấp cho nhà phát triển các công cụ gỡ lỗi phù hợp với mức độ phức tạp của vấn đề đang được giải quyết, thì nhà phát triển chắc chắn sẽ mất năng suất. Ai trong chúng ta đã không phải mất hàng giờ hàng ngày để tìm kiếm một lỗi khó chịu hoặc lỗi đánh máy trong văn bản gốc?!

Trong quá trình phát triển và tạo ra một hệ thống vi xử lý, sớm hay muộn cũng sẽ đến lúc nó cuối cùng được đưa vào phần cứng và bắt đầu có dấu hiệu của sự sống. Tuy nhiên, trong hầu hết các trường hợp, những dấu hiệu này trở nên khó đoán, hệ thống bắt đầu sống cuộc sống của chính nó. Nhiều lập trình viên có thể đồng ý rằng mọi chương trình mới đều có lỗi. Đây là một phần lý do tại sao MK mới lúc đầu hoạt động giống như một hộp "đen".

Để tạo thuận lợi cho quá trình gỡ lỗi hệ thống, toàn bộ lớp công cụ đã được phát triển. Mục đích chính của chúng là làm cho quá trình hoạt động của MK được gỡ lỗi trở nên "minh bạch", tức là, dễ dàng kiểm soát, kiểm soát và sửa đổi tùy ý theo ý muốn của nhà phát triển. Một bộ công cụ chuyên nghiệp tốt có thể cung cấp thêm cho nhà phát triển nhiều dịch vụ, do đó tạo điều kiện thuận lợi đáng kể cho công việc của anh ta, loại bỏ các hoạt động thông thường.

Các công cụ sửa lỗi chính bao gồm trình giả lập trong mạch, trình mô phỏng phần mềm, bảng phát triển (bảng đánh giá), màn hình gỡ lỗi và trình giả lập ROM. Ngoài ra còn có các thiết bị và bộ kết hợp.

BỘ MÔ PHỎNG TRONG MẠCH

Trình mô phỏng trong mạch (ICE) là một công cụ phần cứng-phần mềm có thể thay thế bộ xử lý mô phỏng trong một thiết bị thực. VSE là công cụ sửa lỗi mạnh mẽ và linh hoạt nhất.

Về mặt chức năng, VE được chia thành các VE được kết nối với máy tính bên ngoài (thường là PC tương thích với IBM) và hoạt động độc lập. Cái sau có tài nguyên máy tính và cơ sở đầu vào / đầu ra riêng, do đó, với khả năng ngang nhau, chúng đắt hơn nhiều so với cái trước và với cùng một mức giá, chúng kém hơn đáng kể về chức năng và khả năng dịch vụ.

Với hệ thống đang được gỡ lỗi, VSE thường được kết nối bằng cáp với đầu mô phỏng đặc biệt. Gần đây, các mô hình VSE đã xuất hiện trong đó một đầu như vậy được kết hợp về mặt cấu trúc với thiết bị chính và được lắp vào hệ thống đang được gỡ lỗi thay vì MK. Nếu không thể tháo cái sau (các chân được hàn vào bảng), thì có thể sử dụng VSE, với điều kiện là MC này có chế độ gỡ lỗi trong đó tất cả các chân của nó ở trạng thái thứ ba (trở kháng cao). Trong trường hợp này, một bộ điều hợp clip đặc biệt được sử dụng để kết nối VSE, được kết nối trực tiếp với đầu ra của MK mô phỏng.

Ít nhất. VSE chứa trình gỡ lỗi, nút mô phỏng MK. bộ nhớ mô phỏng và hệ thống con điểm dừng. Các TSE nâng cao hơn có thể bao gồm thêm bộ theo dõi, bộ xử lý điểm dừng, bộ hồ sơ (bộ phân tích hiệu quả mã chương trình), bộ hẹn giờ thời gian thực, phần mềm và công cụ phần cứng cho phép bạn đọc và sửa đổi tài nguyên của bộ xử lý mô phỏng "một cách nhanh chóng" , các công cụ phần mềm và phần cứng cung cấp khả năng quản lý đồng bộ và cần thiết cho việc mô phỏng trong các hệ thống đa bộ xử lý, một môi trường phát triển tích hợp.

Trình gỡ lỗi là một loại cầu nối giữa nhà phát triển và công cụ gỡ lỗi. Trình gỡ lỗi tốt đảm bảo rằng các chương trình đang gỡ lỗi được tải vào bộ nhớ hệ thống, trạng thái và nội dung của tất cả các thanh ghi và bộ nhớ (và, nếu cần, các sửa đổi của chúng) được hiển thị trên màn hình và quá trình mô phỏng được kiểm soát.

Các trình gỡ lỗi mạnh hơn (thường được gọi là Trình gỡ lỗi cấp cao hoặc Cấp cao) cũng cho phép điều này.

  • tiến hành gỡ lỗi tượng trưng (do trình gỡ lỗi, sử dụng thông tin đặc biệt do trình biên dịch cung cấp, "biết" địa chỉ của tất cả các biến, mảng và cấu trúc tượng trưng). Trong trường hợp này, người dùng có thể hoạt động với các tên tượng trưng dễ chấp nhận hơn đối với một người mà không cần nhớ địa chỉ của họ;
  • kiểm soát và phân tích không chỉ văn bản được phân tách mà còn cả mã nguồn của chương trình được viết bằng ngôn ngữ cấp cao và thậm chí cả nhận xét của chính nó.

Trình gỡ lỗi như vậy cho phép người dùng kiểm soát đồng thời tiến trình của chương trình và xem sự tương ứng giữa văn bản nguồn, hình ảnh của chương trình trong mã máy và trạng thái của tất cả các tài nguyên của bộ vi điều khiển mô phỏng.

Cần lưu ý rằng trình gỡ lỗi cấp cao chỉ cung cấp hiệu suất của tất cả các chức năng của nó nếu trình biên dịch chéo được sử dụng cung cấp thông tin gỡ lỗi đầy đủ và chính xác (không phải tất cả các trình biên dịch, đặc biệt là các phiên bản vi phạm bản quyền của chúng, đều có khả năng này) và tại đồng thời định dạng trình bày của nó "quen thuộc" với trình gỡ lỗi.

Bộ nhớ mô phỏng được sử dụng trong quá trình sửa lỗi thay vì ROM của hệ thống đang được phát triển. Hơn nữa, nó cho phép bạn gỡ lỗi chương trình khi không có hệ thống thực hoặc bố cục của nó. Nếu bạn cần thay đổi chương trình đang được gỡ lỗi, chỉ cần tải một chương trình mới hoặc đã sửa đổi vào bộ nhớ của trình giả lập, thay vì lập trình lại ROM là đủ.

Có VSE. cho phép người dùng "thay thế" bộ nhớ mô phỏng thay vì ROM không chỉ toàn bộ mà còn theo từng khối (trong một số kiểu máy, kích thước khối tối thiểu là 1 byte). theo thứ tự do người dùng chỉ định. Để làm điều này, anh ta chỉ cần thiết lập phân phối bộ nhớ dữ liệu và bộ nhớ chương trình, theo đó bộ xử lý sẽ truy cập cả nội dung của ROM trong hệ thống đang được gỡ lỗi và nội dung của bộ nhớ mô phỏng của TSE. Bộ nhớ như vậy thường được gọi là bộ nhớ có khả năng lập bản đồ.

Bộ theo dõi là một bộ phân tích logic hoạt động đồng bộ với bộ xử lý và ghi lại luồng lệnh đang được thực thi cũng như trạng thái của các tín hiệu bên ngoài đã chọn. Có những VSE cho phép theo dõi không chỉ các tín hiệu bên ngoài mà còn cả trạng thái của các nguồn nội bộ của MC. ví dụ: đăng ký. Trong các thiết bị như vậy, các phiên bản đặc biệt của MK (tinh thể mô phỏng) được sử dụng.

Bộ xử lý điểm ngắt cho phép dừng thực thi chương trình hoặc thực hiện các hành động khác (ví dụ: bắt đầu hoặc dừng trình theo dõi) khi đáp ứng các điều kiện do người dùng chỉ định, không giống như cơ chế điểm ngắt thông thường, bộ xử lý cho phép bạn tạo và theo dõi các điều kiện của hầu hết mọi độ phức tạp ở cấp độ phần cứng, trong khi quá trình được mô phỏng không được suy ra từ quy mô thời gian thực. Trong một số mẫu VSE, bộ xử lý điểm ngắt có thể được sử dụng tùy ý để điều khiển động bộ theo dõi.

Trình hồ sơ (trình phân tích hiệu quả mã chương trình) cho phép, dựa trên kết quả chạy chương trình đã sửa lỗi, để lấy thông tin về số lượng lệnh gọi đến các phần khác nhau của chương trình và thời gian thực hiện chúng. Việc phân tích thông tin thống kê do trình hồ sơ cung cấp giúp xác định các phần chương trình "chết" hoặc quá tải và do đó, tối ưu hóa cấu trúc của chương trình đang được gỡ lỗi.

Môi trường phát triển tích hợp là một bộ công cụ phần mềm hỗ trợ tất cả các giai đoạn phát triển phần mềm từ viết mã nguồn của chương trình đến biên dịch và gỡ lỗi chương trình, đồng thời cung cấp khả năng tương tác đơn giản và nhanh chóng với trình mô phỏng và trình gỡ lỗi phần mềm.

Sự hiện diện của trình soạn thảo tích hợp, trình quản lý dự án và hệ thống điều khiển trong vỏ phần mềm VSE tạo điều kiện thuận lợi đáng kể cho công việc của nhà phát triển, giúp anh ta tránh khỏi nhiều hành động thường ngày. Đối với anh ấy, ranh giới giữa viết chương trình, chỉnh sửa và gỡ lỗi rất mờ nhạt. Quá trình chuyển đổi từ chỉnh sửa văn bản nguồn sang gỡ lỗi và ngược lại được thực hiện "minh bạch" và đồng bộ với việc kích hoạt các cửa sổ tương ứng. Trình quản lý dự án tự động bắt đầu biên dịch khi cần và kích hoạt cửa sổ giao diện chương trình tương ứng. Bạn có thể dễ dàng tiến hành gỡ lỗi dự án bằng trình gỡ lỗi giả lập hiện có hoặc bắt đầu flash ROM bằng chương trình đã gỡ lỗi.

Một số ITU cung cấp cho người dùng các tính năng bổ sung khác. Trong số đó, cần đặc biệt lưu ý một khả năng, mặc dù khá cụ thể, nhưng trong một số trường hợp có tầm quan trọng cơ bản, khả năng xây dựng các phức hợp đa trình giả lập cần thiết để gỡ lỗi các hệ thống đa bộ xử lý. của một số trình giả lập.

Trong trường hợp chung, khả năng TSE kiểm soát và quản lý hoạt động của các thiết bị được gỡ lỗi có thể bị hạn chế (ví dụ: xử lý ngắt không chính xác ở chế độ bước, cấm sử dụng cổng nối tiếp, v.v.). Cũng cần nhớ rằng mỗi mô hình VSE có danh sách các bộ vi điều khiển và trình biên dịch được hỗ trợ riêng.

Tuy nhiên, đối với phần lớn các bộ vi điều khiển phổ biến, các VSE đã được phát triển không có hạn chế về việc sử dụng tài nguyên của tinh thể gỡ lỗi. Chúng tôi sẽ minh họa các khả năng của một ESS như vậy bằng cách sử dụng mô hình PICE-51 của công ty Fiton làm ví dụ.

PICE-51 là thiết bị được tạo bằng IC logic lập trình được (FPGA). Điều này giúp giảm đáng kể kích thước của VSE, giảm thiểu độ lệch của các đặc tính điện và tần số của nó so với các đặc tính của MC giả lập và do đó đạt được độ chính xác mô phỏng tối đa ở tần số lên tới 33 MHz ở điện áp cung cấp từ 3,3 đến 5 V .mô phỏng hầu hết tất cả các MK thuộc họ MCS-51. Phần mềm hỗ trợ hoạt động trong môi trường Windows.

PICE-51 bao gồm một bo mạch chính, một bộ điều hợp có thể thay thế cho một nhóm MK cụ thể và một đầu mô phỏng có thể thay thế cũng cho một loại vỏ cụ thể. Bộ theo dõi và bộ xử lý điểm dừng được lắp ráp trên bo mạch chính và bộ xử lý mô phỏng cho một loại MK cụ thể được cài đặt trên bo mạch bộ điều hợp có thể thay thế. Các đầu mô phỏng cho phép thiết bị được cài đặt trong ổ cắm DIP và PLCC trên bo mạch người dùng. Nguồn được cung cấp từ một khối có điện áp đầu ra +5 V (0,5 A) hoặc từ một thiết bị đang được gỡ lỗi. Giao tiếp với máy tính thông qua kênh RS-232C được cách ly bằng điện ở tốc độ 115 kbaud.

Các tính năng và khả năng khác của PICE-51 như sau:

  • mô phỏng chính xác - không có bất kỳ hạn chế nào đối với việc sử dụng chương trình người dùng tài nguyên MK;
  • lên tới 256 KB bộ nhớ dữ liệu và chương trình mô phỏng. Hỗ trợ cho mô hình bộ nhớ ngân hàng. Phân bổ bộ nhớ giữa ESS và thiết bị của người dùng với độ chính xác là 1 byte;
  • lên đến 512K điểm ngắt phần cứng để truy cập bộ nhớ chương trình và dữ liệu,
  • hỗ trợ phần cứng để gỡ lỗi các chương trình bằng ngôn ngữ cấp cao;
  • truy tìm tám tín hiệu bên ngoài tùy ý;
  • bốn đầu ra đồng bộ hóa thiết bị người dùng;
  • trình theo dõi thời gian thực với bộ đệm từ 16 đến 64K khung (mảng) 64 bit với khả năng truy cập nhanh chóng. Theo dõi địa chỉ, dữ liệu, tín hiệu điều khiển, bộ đếm thời gian thực và tám tín hiệu người dùng bên ngoài;
  • bộ lọc theo dõi có thể lập trình;
  • bộ xử lý điểm dừng phần cứng với khả năng đặt điều kiện dừng mô phỏng phức tạp bằng cách kết hợp địa chỉ, dữ liệu, điều khiển, tám tín hiệu bên ngoài, bộ hẹn giờ thời gian thực, bộ đếm sự kiện và bộ hẹn giờ trễ:
  • bốn điểm ngắt phức tạp có thể được sử dụng độc lập hoặc kết hợp cho các điều kiện AND/OR/IF-THEN;
  • bộ đếm thời gian thực 48-bit;
  • mô phỏng "trong suốt" - truy cập "nhanh chóng" vào bộ nhớ mô phỏng, điểm dừng, bộ xử lý điểm dừng, bộ đệm theo dõi, bộ đếm thời gian thực;
  • bộ tạo đồng hồ được điều khiển cho MK giả lập. Khả năng thay đổi mượt mà nó từ 500 kHz đến 40 MHz;
  • tích hợp hệ thống tự chẩn đoán của thiết bị VSE. Việc phát triển các chương trình ở cấp độ quản lý dự án cho trình biên dịch macro МСА-51 ("Fiton"/"Microcosm"), cũng như cho các gói công cụ chéo từ Keil Software và Hệ thống IAR được hỗ trợ;
  • hỗ trợ gỡ lỗi tượng trưng đầy đủ tính năng của các chương trình được tạo bằng các trình biên dịch sau: trình biên dịch ASM51 của Intel, trình biên dịch PL / M của Intel, trình biên dịch hợp ngữ và trình biên dịch C từ Hệ thống Avocet. Công nghệ cao. Phần mềm tác vụ;
  • tự động lưu và tải các tệp cấu hình phần cứng, giao diện và các tùy chọn gỡ lỗi. Đảm bảo khả năng tương thích của các tệp cấu hình với trình giả lập PDS-51 và tính di động của các dự án giữa PICE-51 và trình giả lập PDS-51;
  • khả năng tùy chỉnh màu sắc, phông chữ và các cài đặt khác cho tất cả các cửa sổ cùng một lúc và cho từng cửa sổ riêng biệt.

Một loạt các chức năng như vậy làm cho VSE trở thành công cụ sửa lỗi linh hoạt và mạnh mẽ nhất.

MÁY MÔ PHỎNG

Trình mô phỏng - một công cụ phần mềm có thể mô phỏng hoạt động của MK và bộ nhớ của nó. Thông thường, nó bao gồm trình gỡ lỗi, kiểu CPU và bộ nhớ. Các thiết bị tiên tiến hơn chứa các mô hình thiết bị ngoại vi tích hợp (bộ hẹn giờ, cổng, ADC và hệ thống ngắt).

Trình giả lập phải "có khả năng" tải các tệp chương trình ở tất cả các định dạng phổ biến, hiển thị thông tin về trạng thái tài nguyên của bộ vi điều khiển mô phỏng một cách đầy đủ nhất có thể. và cũng cung cấp cơ hội để mô phỏng việc thực thi chương trình đã tải ở các chế độ khác nhau. Trong quá trình gỡ lỗi, mô hình sẽ chạy chương trình và trạng thái hiện tại của mô hình được hiển thị trên màn hình máy tính.

Bằng cách nạp chương trình vào bộ giả lập. người dùng có thể chạy nó ở chế độ từng bước hoặc liên tục, đặt các điểm ngắt có điều kiện hoặc vô điều kiện, kiểm soát và tự do sửa đổi nội dung của các ô nhớ và thanh ghi của bộ vi điều khiển mô phỏng. Trình mô phỏng cho phép bạn nhanh chóng kiểm tra logic thực hiện chương trình, tính đúng đắn của các phép toán số học.

Tùy thuộc vào loại trình gỡ lỗi được sử dụng, một số mô hình giả lập hỗ trợ gỡ lỗi chương trình tượng trưng cấp cao.

Trình mô phỏng cũng có thể chứa một số công cụ phần mềm bổ sung, chẳng hạn như giao diện môi trường bên ngoài. Sự hiện diện của một giao diện như vậy cho phép bạn tạo và sử dụng linh hoạt mô hình môi trường bên ngoài của MC. hoạt động và ảnh hưởng đến chương trình đã sửa lỗi theo một thuật toán nhất định.

Trong một hệ thống thực, MC thường "tham gia" vào việc đọc thông tin từ các thiết bị bên ngoài (cảm biến) được kết nối với nó, xử lý nó và đưa ra các tín hiệu điều khiển tới các bộ truyền động. Để mô phỏng hoạt động của cảm biến trong trình giả lập đơn giản, bạn cần thay đổi thủ công trạng thái hiện tại của kiểu thiết bị ngoại vi mà cảm biến được kết nối trong một hệ thống thực. Ví dụ: nếu khi nhận một byte qua cổng nối tiếp, một cờ nhất định được đặt và chính byte đó rơi vào một thanh ghi nhất định, thì cả hai hành động này phải được thực hiện thủ công trong trình giả lập. Trong một số mô hình, vấn đề này đã được giải quyết: trình giả lập có các công cụ tích hợp để tạo mô hình của các thiết bị bên ngoài được kết nối với MK, bao gồm các công cụ để hiển thị thông tin bằng đồ họa.

Một tính năng rõ ràng của phần mềm mô phỏng là rằng các chương trình được tải trong chúng được thực thi theo thang thời gian khác với thời gian thực. Tuy nhiên, giá thấp, khả năng gỡ lỗi ngay cả khi không có bản mô phỏng của thiết bị đang được gỡ lỗi, khiến phần mềm giả lập trở thành một công cụ gỡ lỗi rất hấp dẫn. Cũng cần lưu ý rằng có cả một loại lỗi chỉ có thể được phát hiện bằng trình mô phỏng.

MÀN HÌNH GỠ LỖI

Màn hình gỡ lỗi là một chương trình đặc biệt được tải vào bộ nhớ của hệ thống đang được gỡ lỗi. Nó buộc MK phải thực hiện, ngoài tác vụ được áp dụng, còn có các chức năng gỡ lỗi:

  • tải mã ứng dụng người dùng vào bộ nhớ không có màn hình;
  • thiết lập điểm dừng;
  • bắt đầu và dừng chương trình đã tải trong thời gian thực;
  • chuyển từng bước chương trình người dùng;
  • xem, chỉnh sửa nội dung của bộ nhớ và các thanh ghi điều khiển.

Chương trình màn hình hoạt động "kết hợp" với máy tính hoặc thiết bị đầu cuối thụ động, trên đó diễn ra quá trình trực quan hóa và kiểm soát quá trình gỡ lỗi. Ưu điểm của phương pháp này

  • chi phí rất thấp trong khi vẫn duy trì khả năng gỡ lỗi trong thời gian thực, nhược điểm chính;
  • phân tâm tài nguyên MK cho các thủ tục gỡ lỗi và giao tiếp (màn hình chiếm một số bộ nhớ, ngắt, kênh nối tiếp). Gần đây, các chương trình đã xuất hiện mà thực tế không chiếm tài nguyên phần cứng của MK (chúng sẽ được thảo luận trong phần "Trình giả lập ROM").

BAN PHÁT TRIỂN

Hội đồng phát triển, hay, như chúng thường được gọi trong tài liệu nước ngoài, hội đồng đánh giá (Hội đồng đánh giá). - các nhà xây dựng ban đầu để tạo nguyên mẫu của các hệ thống được áp dụng. Gần đây, nhiều công ty sản xuất, phát hành các mẫu mới của MK. cung cấp và các bảng phát triển tương ứng. Thông thường, đây là một bảng mạch in có gắn MK và tất cả các yếu tố cần thiết cho hoạt động bình thường của nó, cũng như hệ thống liên lạc với máy tính. Theo quy định, bảng cung cấp không gian trống để gắn thiết bị người dùng đang được phát triển. Đôi khi cũng có một "hệ thống dây điện" làm sẵn để cài đặt các thiết bị bổ sung do công ty khuyến nghị (ROM, RAM, màn hình LCD, bàn phím, ADC, v.v.). Các bảng do người dùng sửa đổi có thể được sử dụng thuận lợi làm bộ điều khiển một bảng được tích hợp trong các sản phẩm quy mô nhỏ (5...20 chiếc.).

Để thuận tiện cho người dùng, các bảng phát triển cũng được trang bị một công cụ gỡ lỗi đơn giản dựa trên màn hình gỡ lỗi. Hai cách tiếp cận khác nhau đã xuất hiện ở đây: một được sử dụng cho MK. có một xe buýt bên ngoài và thứ hai - dành cho những MK không có nó.

Trong trường hợp đầu tiên, màn hình gỡ lỗi được cung cấp dưới dạng chip ROM. được cài đặt trong một ổ cắm đặc biệt trên bảng phát triển. Bo mạch cũng có RAM cho các chương trình người dùng và kênh giao tiếp với máy tính hoặc thiết bị đầu cuối. Một ví dụ là bo mạch phát triển do Intel phát triển cho dòng MK MCS-51.

Trong trường hợp thứ hai, bảng phát triển chứa các hệ thống lập trình tích hợp sẵn cho ROM bên trong của MK. mà được điều khiển bởi một máy tính. Chương trình màn hình được nhập vào ROM của MK cùng với ứng dụng được chuẩn bị tương ứng (các cuộc gọi của quy trình gỡ lỗi màn hình được chèn vào đúng chỗ). Sau đó, chạy thử nghiệm được thực hiện. Để sửa chương trình đang được gỡ lỗi, nó sẽ bị xóa khỏi ROM và chương trình đã sửa được ghi vào đó. Chương trình ứng dụng đã hoàn thành được lấy từ chương trình đã sửa lỗi bằng cách xóa màn hình và tất cả các cuộc gọi đến các chức năng của nó. Các bo mạch phát triển cho MK thuộc họ PIC-micro (Microchip), 80C750 (Philips), 89C2051 (Atmel) được thiết kế cho thuật toán sửa lỗi như vậy.

Các bảng phát triển đôi khi được trang bị các chương trình sửa lỗi chạy trên máy tính bên ngoài "kết hợp" với màn hình. Các chương trình này gần đây đã trở nên phức tạp hơn rõ rệt và thường có một bộ chức năng gỡ lỗi chuyên nghiệp cao (ví dụ: trình gỡ lỗi giả lập) hoặc các yếu tố khác nhau vốn chỉ có trong môi trường phát triển tích hợp ở dạng thuần túy. Bộ công cụ cũng có thể bao gồm các chương trình ứng dụng thường gặp nhất trong thực tế.

Khả năng gỡ lỗi của bộ "bảng phát triển cộng với màn hình" không phổ biến như của ESS. Ngoài ra, một số tài nguyên MC trong quá trình gỡ lỗi được chọn để màn hình hoạt động. Tuy nhiên, sự sẵn có của một bộ hoàn chỉnh các công cụ phần cứng và phần mềm làm sẵn cho phép bạn bắt đầu cài đặt và gỡ lỗi hệ thống được áp dụng mà không mất thời gian trong nhiều trường hợp là một yếu tố quyết định. Đặc biệt là khi bạn cho rằng một bộ như vậy có giá thấp hơn nhiều lần so với một trình giả lập linh hoạt hơn.

BỘ GIẢI PHÓNG ROM

Trình giả lập ROM là một công cụ phần mềm và phần cứng cho phép bạn thay thế ROM của thiết bị đang được sửa lỗi bằng RAM. vào đó bạn có thể tải xuống chương trình từ máy tính của mình thông qua một trong các kênh liên lạc tiêu chuẩn. Nó cho phép người dùng tránh nhiều chu kỳ flash ROM. Trình giả lập ROM chỉ được sử dụng để gỡ lỗi các chương trình MK có khả năng truy cập bộ nhớ chương trình bên ngoài. Về độ phức tạp và chi phí, thiết bị này có thể so sánh với các bảng phát triển. Nó có một lợi thế lớn - tính linh hoạt. Trình giả lập ROM có thể hoạt động với mọi MK.

Trình giả lập ROM đầu tiên chỉ cho phép chương trình được tải, chạy và dừng bằng cách sử dụng thiết lập lại tổng thể. Sau đó, có những mô hình phức tạp với việc tạo tín hiệu theo dõi phần cứng cho máy hiện sóng khi đến một địa chỉ nhất định. Bộ nhớ mô phỏng trong các sản phẩm như vậy có sẵn để xem và sửa đổi, nhưng việc kiểm soát các thanh ghi kiểm soát nội bộ của MK cho đến gần đây là không thể.

Gần đây, cái gọi là trình giả lập ROM thông minh đã xuất hiện. Chúng cho phép bạn 'nhìn' bên trong MC trên bo mạch của người dùng và tương tự như VSE trong việc kiểm soát gỡ lỗi. và cái kia Trên thực tế, bộ xử lý trong trường hợp này không được thay thế và bộ xử lý do người dùng trả phí được sử dụng.

Trình giả lập ROM thông minh là sự kết hợp của trình giả lập ROM thông thường. một màn hình gỡ lỗi và một hệ thống để nhanh chóng chuyển đổi xe buýt từ xe buýt này sang xe buýt khác. Điều này tạo ra hiệu ứng như thể màn hình gỡ lỗi đã được cài đặt trên bo mạch của người dùng, đồng thời nó thực tế không chiếm tài nguyên phần cứng từ MK, ngoại trừ một vùng nhỏ (khoảng 4 KB) gồm các bước phần mềm. Ví dụ, một trình giả lập như vậy đã được phát triển bởi công ty Fiton cho tất cả các MK hiện tại và tương lai có lõi 8051, nhưng bổ sung thêm các thiết bị đầu vào / đầu ra khác nhau. Sản phẩm hỗ trợ nhiều MC khác nhau của Philips, Siemens. OKI.

MÔI TRƯỜNG PHÁT TRIỂN TÍCH HỢP

Nói một cách chính xác, môi trường phát triển tích hợp không nằm trong số các công cụ gỡ lỗi, tuy nhiên, sẽ là sai lầm nếu bỏ qua lớp công cụ phần mềm hỗ trợ và tăng tốc đáng kể quá trình phát triển và gỡ lỗi hệ thống vi xử lý.

Với cách tiếp cận truyền thống, giai đoạn đầu của việc viết một chương trình được xây dựng như sau. Văn bản nguồn được nhập bằng trình soạn thảo văn bản. Sau khi hoàn thành việc gõ, làm việc với trình soạn thảo văn bản dừng lại và trình biên dịch chéo bắt đầu. Theo quy định, một chương trình mới chứa các lỗi cú pháp và trình biên dịch sẽ báo cáo chúng cho bảng điều khiển của người vận hành. Sau đó, trình soạn thảo văn bản được bắt đầu lại và người vận hành sẽ tìm và loại bỏ các lỗi đã xác định. Đồng thời, các thông báo về bản chất của chúng do trình biên dịch hiển thị sẽ không còn hiển thị nữa vì màn hình đã bị trình soạn thảo văn bản chiếm giữ.

Chu kỳ này có thể lặp lại nhiều lần. Và nếu chương trình tương đối phức tạp, được lắp ráp từ nhiều phần khác nhau, có thể chỉnh sửa hoặc hiện đại hóa, thì ngay cả giai đoạn ban đầu này cũng có thể đòi hỏi rất nhiều công sức và thời gian của người lập trình.

Để tránh một lượng lớn công việc thường ngày và do đó tăng đáng kể năng suất của lập trình viên, cái gọi là môi trường phát triển tích hợp (vỏ) phát triển (IDE Môi trường phát triển tích hợp) đã xuất hiện và đang nhanh chóng trở nên phổ biến cho phép.

Theo quy định, một môi trường tích hợp tốt kết hợp các công cụ sửa lỗi có sẵn (trình giả lập trong mạch, trình mô phỏng phần mềm, trình lập trình) và cung cấp cho lập trình viên các văn bản chương trình kiểu "Turbo".

Môi trường tích hợp cho phép:

  • sử dụng trình soạn thảo văn bản nhiều tệp tích hợp, được định hướng đặc biệt để hoạt động với các văn bản nguồn chương trình;
  • quan sát đồng thời (ở chế độ nhiều cửa sổ) chẩn đoán lỗi được phát hiện trong quá trình biên dịch và văn bản nguồn của chương trình, có sẵn để chỉnh sửa;
  • làm việc trên nhiều dự án song song. Trình quản lý dự án cho phép bạn sử dụng bất kỳ dự án nào làm mẫu cho một dự án mới được tạo. Các tùy chọn cho trình biên dịch được sử dụng và danh sách các tệp nguồn dự án được đặt trong menu hộp thoại và được lưu trong dự án, loại bỏ nhu cầu làm việc với các tệp bó bất tiện;
  • chỉ biên dịch lại các mô-đun đã chỉnh sửa;
  • tải chương trình đang được gỡ lỗi vào các công cụ gỡ lỗi có sẵn và làm việc với chúng mà không cần thoát khỏi trình bao;
  • kết nối với vỏ hầu hết mọi phần mềm.

Gần đây, các chức năng của môi trường phát triển tích hợp đã trở thành một phần trong giao diện lập trình của các trình giả lập và trình gỡ lỗi-mô phỏng "tiên tiến" nhất. Chức năng như vậy, kết hợp với giao diện thân thiện, giúp tăng tốc đáng kể công việc của lập trình viên.

Do đó, khi chọn các công cụ gỡ lỗi, nên tính đến bộ chỉ số sau: danh sách các bộ vi điều khiển được hỗ trợ, các hạn chế về tài nguyên của các bộ vi điều khiển mô phỏng / mô phỏng, khả năng gỡ lỗi tượng trưng, ​​​​danh sách các trình biên dịch được hỗ trợ và, cuối cùng là khả năng phục vụ.

Tác giả: Yu.Zobnin, Sh.Kobakhidze, Moscow

Xem các bài viết khác razdela Bộ vi điều khiển.

Đọc và viết hữu ích bình luận về bài viết này.

<< Quay lại

Tin tức khoa học công nghệ, điện tử mới nhất:

Máy tỉa hoa trong vườn 02.05.2024

Trong nền nông nghiệp hiện đại, tiến bộ công nghệ đang phát triển nhằm nâng cao hiệu quả của quá trình chăm sóc cây trồng. Máy tỉa thưa hoa Florix cải tiến đã được giới thiệu tại Ý, được thiết kế để tối ưu hóa giai đoạn thu hoạch. Công cụ này được trang bị cánh tay di động, cho phép nó dễ dàng thích ứng với nhu cầu của khu vườn. Người vận hành có thể điều chỉnh tốc độ của các dây mỏng bằng cách điều khiển chúng từ cabin máy kéo bằng cần điều khiển. Cách tiếp cận này làm tăng đáng kể hiệu quả của quá trình tỉa thưa hoa, mang lại khả năng điều chỉnh riêng cho từng điều kiện cụ thể của khu vườn, cũng như sự đa dạng và loại trái cây được trồng trong đó. Sau hai năm thử nghiệm máy Florix trên nhiều loại trái cây khác nhau, kết quả rất đáng khích lệ. Những nông dân như Filiberto Montanari, người đã sử dụng máy Florix trong vài năm, đã báo cáo rằng thời gian và công sức cần thiết để tỉa hoa đã giảm đáng kể. ... >>

Kính hiển vi hồng ngoại tiên tiến 02.05.2024

Kính hiển vi đóng vai trò quan trọng trong nghiên cứu khoa học, cho phép các nhà khoa học đi sâu vào các cấu trúc và quá trình mà mắt thường không nhìn thấy được. Tuy nhiên, các phương pháp kính hiển vi khác nhau đều có những hạn chế, trong đó có hạn chế về độ phân giải khi sử dụng dải hồng ngoại. Nhưng những thành tựu mới nhất của các nhà nghiên cứu Nhật Bản tại Đại học Tokyo đã mở ra những triển vọng mới cho việc nghiên cứu thế giới vi mô. Các nhà khoa học từ Đại học Tokyo vừa công bố một loại kính hiển vi mới sẽ cách mạng hóa khả năng của kính hiển vi hồng ngoại. Thiết bị tiên tiến này cho phép bạn nhìn thấy cấu trúc bên trong của vi khuẩn sống với độ rõ nét đáng kinh ngạc ở quy mô nanomet. Thông thường, kính hiển vi hồng ngoại trung bị hạn chế bởi độ phân giải thấp, nhưng sự phát triển mới nhất của các nhà nghiên cứu Nhật Bản đã khắc phục được những hạn chế này. Theo các nhà khoa học, kính hiển vi được phát triển cho phép tạo ra hình ảnh có độ phân giải lên tới 120 nanomet, cao gấp 30 lần độ phân giải của kính hiển vi truyền thống. ... >>

Bẫy không khí cho côn trùng 01.05.2024

Nông nghiệp là một trong những lĩnh vực quan trọng của nền kinh tế và kiểm soát dịch hại là một phần không thể thiếu trong quá trình này. Một nhóm các nhà khoa học từ Viện nghiên cứu khoai tây trung tâm-Hội đồng nghiên cứu nông nghiệp Ấn Độ (ICAR-CPRI), Shimla, đã đưa ra một giải pháp sáng tạo cho vấn đề này - bẫy không khí côn trùng chạy bằng năng lượng gió. Thiết bị này giải quyết những thiếu sót của các phương pháp kiểm soát sinh vật gây hại truyền thống bằng cách cung cấp dữ liệu về số lượng côn trùng theo thời gian thực. Bẫy được cung cấp năng lượng hoàn toàn bằng năng lượng gió, khiến nó trở thành một giải pháp thân thiện với môi trường và không cần điện. Thiết kế độc đáo của nó cho phép giám sát cả côn trùng có hại và có ích, cung cấp cái nhìn tổng quan đầy đủ về quần thể ở bất kỳ khu vực nông nghiệp nào. Kapil cho biết: “Bằng cách đánh giá các loài gây hại mục tiêu vào đúng thời điểm, chúng tôi có thể thực hiện các biện pháp cần thiết để kiểm soát cả sâu bệnh và dịch bệnh”. ... >>

Tin tức ngẫu nhiên từ Kho lưu trữ

Máy tính siêu nhỏ EPICT EPP-100 với máy chiếu pico 16.08.2013

Máy tính mini EPICT EPP-100, chạy hệ điều hành Android 4.2.2 Jelly Bean, đã được bán.

Điểm mới lạ thú vị là máy được trang bị máy chiếu pico tích hợp, cho phép bạn tạo hình ảnh có kích thước lên đến 80 inch với độ phân giải 800x480 pixel lên tường hoặc màn hình. Độ sáng là 35 lumen.

Nền tảng của thiết bị là bộ vi xử lý lõi kép Allwinner A20 với kiến ​​trúc ARM Cortex-A7, được bổ sung bởi bộ tăng tốc đồ họa Mali 400 MP2. Dung lượng RAM là 512 MB. Mô-đun flash tích hợp có dung lượng 4 GB có thể được bổ sung bằng thẻ nhớ microSD (tối đa 32 GB).

Thiết bị bao gồm bộ điều hợp không dây Wi-Fi (802.11b / g / n) và Bluetooth, cổng USB 2.0 và microUSB cùng giắc cắm tai nghe 3,5 mm. Kích thước - 68x62x57 mm, trọng lượng - 210 g. Bạn có thể mua một máy tính mini với giá ước tính là $ 220.

Tin tức thú vị khác:

▪ TDA8939TH - nguồn tham chiếu để thiết lập bộ khuếch đại công suất kỹ thuật số lớp D

▪ TV LCD với hơn 68 tỷ màu

▪ Samsung bắt đầu sản xuất chip nhớ 3D

▪ Điện thoại di động điều khiển máy tính

▪ Máy dò điện băng thông rộng siêu nhỏ LTC5508

Nguồn cấp tin tức khoa học và công nghệ, điện tử mới

 

Tài liệu thú vị của Thư viện kỹ thuật miễn phí:

▪ phần của trang web Tài liệu quy phạm về bảo hộ lao động. Lựa chọn bài viết

▪ Điều Nhanh Hơn, Cao Hơn, Mạnh Mẽ Hơn! biểu hiện phổ biến

▪ Bài viết truyền thống. Bách khoa toàn thư lớn cho trẻ em và người lớn

▪ Bài báo Nhân sự chẩn đoán và bảo dưỡng máy kéo. Hướng dẫn tiêu chuẩn về bảo hộ lao động

▪ bài viết bảo vệ đèn pha. Bách khoa toàn thư về điện tử vô tuyến và kỹ thuật điện

▪ bài viết Số bị gạch bỏ. tiêu điểm bí mật

Để lại bình luận của bạn về bài viết này:

Имя:


Email (tùy chọn):


bình luận:





Tất cả các ngôn ngữ của trang này

Trang chủ | Thư viện | bài viết | Sơ đồ trang web | Đánh giá trang web

www.diagram.com.ua

www.diagram.com.ua
2000-2024