Một bộ vi xử lý khởi đầu tốt để tìm hiểu hội là gì?


19

Vì vậy, tôi muốn học hội trước tiên trên MP, sau đó chuyển sang C (vì có vẻ như đó là thứ mà hầu hết họ sử dụng).

Tôi muốn tham gia vào Lập trình nhúng, tôi thực sự yêu thích công cụ cấp C thấp (Kernels / Modules cho Linux chủ yếu là những gì tôi đã làm), nhưng tôi thích ý tưởng có thể lập trình ở cấp độ thấp hơn thế (Vi điều khiển / Bộ vi xử lý).

Tôi biết về Arduino, và điều đó thật tuyệt vời, nhưng tôi không thể tìm thấy nhiều tài nguyên để sử dụng hội với chúng. Atmel AVRs có vẻ rất phổ biến (và giá rẻ), nhưng khi nói đến phần cứng thực tế (nối chúng trên bảng mạch, v.v.), tôi không tìm thấy nhiều thông tin.

Bất kỳ đề xuất / thông tin hoặc tài nguyên mà các bạn / cô gái biết về xin vui lòng cho tôi biết.

Chỉnh sửa: Một điều nữa: Có vẻ như tất cả các cuốn sách Vi xử lý mà tôi đã đọc (Thông thường là AVR) nói về chính bộ vi xử lý và lập trình nó. Nhưng tôi vẫn chưa thấy một cuốn sách thực sự nói về việc tự cài đặt tất cả các thành phần (bộ vi xử lý, bộ nhớ, nguồn, v.v.). Nếu tôi có thể tìm thấy thứ gì đó đưa tôi đi qua thì tôi sẽ kinh doanh. (Tôi muốn học từ đầu.) Chưa kể tôi không biết bạn sẽ giao tiếp giữa họ như thế nào.


3
Tôi ghét gửi cho bạn ở nơi khác, nhưng nếu bạn quan tâm đến AVR, bạn cần biết về AVRfreaks.net .
Kevin Vermeer

Ya Im nghiêng về phía AVR ... chủ yếu là vì họ có nhiều thông tin về họ và họ rẻ hơn so với TI-MPS430 ...

2
AVR rất phổ biến với những người có sở thích, nhưng tôi không chắc bạn sẽ lấy dữ liệu chi phí của mình ở đâu. Cả hai gia đình có một số dịch vụ ít hơn 1 USD và những người khác đẩy 20 USD.
Kevin Vermeer

Chà ..... khi tôi nhìn vào MPS430, có vẻ như phần mềm (trình gỡ lỗi, v.v.) hơi đắt khi được thêm vào các bảng phát triển.

1
Lời khuyên của tôi là không chọn MSP430 nếu bạn là người mới bắt đầu. Các công cụ chính thức là tốt, nhưng hỗ trợ miễn phí bạn sẽ thấy trực tuyến không phù hợp với PIC / AVR
Toby Jaffey

Câu trả lời:


14

Tôi đã học trên 68HC11 ở trường đại học. Chúng rất đơn giản để làm việc với nhưng thành thật mà nói, hầu hết các bộ vi điều khiển có công suất thấp sẽ tương tự nhau (AVR, 8051, PIC, MSP430). Điều lớn nhất sẽ tăng thêm độ phức tạp cho lập trình ASM cho vi điều khiển là số lượng và loại chế độ địa chỉ bộ nhớ được hỗ trợ . Bạn nên tránh các thiết bị phức tạp hơn lúc đầu như bộ xử lý ARM cao cấp hơn.

Có lẽ tôi muốn giới thiệu MSP430 như một điểm khởi đầu tốt. Có thể viết một chương trình bằng C và tìm hiểu bằng cách thay thế các chức năng khác nhau bằng cách lắp ráp nội tuyến. Bắt đầu đơn giản, x + y = z, v.v.

Sau khi bạn thay thế một hàm hoặc thuật toán bằng cách lắp ráp, hãy so sánh và đối chiếu cách bạn mã hóa nó và trình biên dịch C đã tạo. Đây có lẽ là một trong những cách tốt hơn để học lắp ráp theo quan điểm của tôi và đồng thời tìm hiểu về cách trình biên dịch hoạt động có giá trị vô cùng như một lập trình viên nhúng. Chỉ cần đảm bảo rằng bạn tắt tối ưu hóa trong trình biên dịch C lúc đầu hoặc bạn sẽ rất bối rối bởi mã được tạo của trình biên dịch. Dần dần bật tối ưu hóa và lưu ý những gì trình biên dịch làm.

RISC vs CISC

RISC có nghĩa là 'Tính toán tập lệnh giảm', nó không đề cập đến một tập lệnh cụ thể mà chỉ là một chiến lược thiết kế nói rằng CPU có một tập lệnh tối thiểu. Vài hướng dẫn mà mỗi người làm một cái gì đó cơ bản. Đây không phải là định nghĩa kỹ thuật nghiêm ngặt về những gì nó cần 'là RISC'. Mặt khác, các kiến ​​trúc CISC có rất nhiều hướng dẫn nhưng mỗi "làm được nhiều hơn".

Ưu điểm của RISC là thiết kế CPU của bạn cần ít bóng bán dẫn hơn, nghĩa là sử dụng ít năng lượng hơn (lớn cho vi điều khiển), rẻ hơn để tạo ra và tốc độ xung nhịp cao hơn dẫn đến hiệu suất cao hơn. Việc sử dụng năng lượng thấp hơn và sản xuất rẻ hơn nói chung là đúng, hiệu suất cao hơn thực sự không đạt được mục tiêu là kết quả của những cải tiến thiết kế trong kiến ​​trúc CISC.

Hầu như tất cả các lõi CPU đều là thiết kế RISC hoặc "tầng giữa" ngày nay. Ngay cả với kiến ​​trúc CISC nổi tiếng (hoặc khét tiếng), x86. Các CPU x86 hiện đại là RISC bên trong giống như các lõi với bộ giải mã được bắt vít ở mặt trước, phá vỡ các hướng dẫn x86 thành nhiều RISC giống như các hướng dẫn. Tôi nghĩ Intel gọi đây là 'micro-op'.

Về việc (RISC so với CISC) dễ học hơn trong lắp ráp, tôi nghĩ rằng đó là một sự tung tăng. Làm một cái gì đó với một tập lệnh RISC thường đòi hỏi nhiều dòng lắp ráp hơn là làm điều tương tự với một tập lệnh CISC. Mặt khác, các bộ hướng dẫn CISC phức tạp hơn để học do số lượng hướng dẫn có sẵn nhiều hơn.

Hầu hết lý do CISC có một tên xấu là x86 là ví dụ phổ biến nhất và là một mớ hỗn độn để làm việc. Tôi nghĩ rằng đó chủ yếu là kết quả của các hướng dẫn x86 đã rất cũ và đã được mở rộng hơn một nửa hoặc nhiều lần hơn trong khi vẫn duy trì khả năng tương thích ngược. Ngay cả i7 core 4.5Ghz của bạn cũng có thể chạy ở chế độ 286 (và khi khởi động).

Đối với ARM là một kiến ​​trúc RISC, tôi sẽ xem xét điều đó gây tranh cãi vừa phải. Đó chắc chắn là một kiến ​​trúc cửa hàng tải. Tập lệnh cơ sở giống như RISC, nhưng trong các lần sửa đổi gần đây, tập lệnh đã phát triển khá nhiều đến mức cá nhân tôi coi nó giống như một trung gian giữa RISC và CISC. Bộ hướng dẫn ngón tay cái thực sự là 'RISCish' nhất trong các bộ hướng dẫn ARM.


@Mark - ARM cũng là bộ xử lý RISC, tập lệnh không tệ lắm. Nó thực sự được thiết kế khá độc đáo; có một số hướng dẫn về phân biệt không gian người dùng và phân biệt không gian và các phức tạp khác, nhưng chúng có thể bị bỏ qua trong khi bạn bắt đầu.
Kevin Vermeer

1
@reemrevnivek Tôi đã cố gắng lái anh ấy ra khỏi sự phức tạp của việc xử lý nhiều chế độ xử lý và MMU khi anh ấy bắt đầu vào ASM, tại sao tôi lại đề cập đến các ARM cao cấp hơn. Việc khởi tạo và thiết lập các SoC ARM cao cấp hơn về cơ bản cũng phức tạp hơn so với một cái gì đó giống như một AVR / PIC / MSP430.
Đánh dấu

RỦI RO? Tôi không chắc là tôi hiểu sự khác biệt giữa điều đó và bất cứ điều gì mà những người khác đang ... quan tâm giải thích? Không phải hầu hết các vi điều khiển RISC? nó chỉ có nghĩa là ít tập lệnh đúng?

1
@sauron Tôi đã thêm vào câu trả lời của mình lại: RISC vs CISC.
Đánh dấu

Là những thứ như AVR / PICS thường là RISC hoặc CISC?

8

Tôi nghĩ rằng vi điều khiển PIC 8 bit là sự lựa chọn tốt nhất vì số lượng hướng dẫn giảm.

Tác dụng phụ của số lượng hướng dẫn giảm là bạn phải phát minh lại bánh xe so với các bộ vi điều khiển khác với nhiều hướng dẫn hơn.

Nhưng sau khi tìm hiểu với PIC, bạn có thể di chuyển sang các bộ vi điều khiển khác và xem những gì phù hợp hơn với bạn.


Tôi sẽ không hoàn toàn không đồng ý vì đây là những gì tôi đang khám phá, nhưng lõi 8, 16 và 32 bit có chiến lược asm hoàn toàn khác nhau.
Người chơi Grady

7

Tương tự như gợi ý của Mark về 68HC11, Bộ hướng dẫn của họ Freescale 68HCS08 là phiên bản rút gọn của Motorola 6809, mà tôi nghĩ có một trong những bộ hướng dẫn 8 bit sạch nhất thời bấy giờ. Bạn có thể nhận được một bảng phát triển với các công tắc, đèn LED, gia tốc kế 3 trục và còi hình tròn với giá 79 đô la tại đây .


Số lượng đăng ký giảm mà S08 có so với HC11 có thể khiến mọi thứ trở nên khó khăn hơn một chút, vì bạn sẽ cần phải tìm ra ngăn xếp để làm bất cứ điều gì (được dạy sau trong phòng thí nghiệm của tôi với HC11 (hoặc là nó 12 giây)). Về phần mở rộng, các AVR thực sự rất tốt vì bạn có tới 32 thanh ghi để chơi trước khi lo lắng về stack.
Nick T

Thật ra tôi thích sự đơn giản của bộ tích lũy đơn, mặc dù nó có thể là một nút cổ chai. Thay vì sử dụng ngăn xếp cho các biến tạm thời, để bắt đầu, tôi thấy đơn giản hơn khi sử dụng 144 byte biến trực tiếp có thể truy cập bằng các hướng dẫn ngắn hơn (112 byte khác của trang trực tiếp được sử dụng cho các thanh ghi I / O). Sử dụng ngăn xếp (cho phép các thói quen đệ quy và đệ quy) có thể được học sau này.
tcrosley

Không phải HC (S) 08 có nguồn gốc từ HC05 sao?
Johan.

@ Johan.A Vâng, bạn hoàn toàn đúng. HCS08 là phiên bản nâng cao của HC05. Đáng lẽ tôi phải đề cập điều đó. Tôi nghĩ rằng đạo hàm là một cái gì đó như 6800 -> 6801 -> 6805 -> HC (S) 08. Tôi đã viết rất nhiều mã lắp ráp cho 6805. Tôi đã so sánh HCS08 với 6809 để liên kết với các ý kiến ​​khác là 68HC11 (gần như là một phiên bản vi điều khiển của 6809).
tcrosley

4

Bộ hướng dẫn msp430 là một bộ tốt cho việc học lắp ráp trên. Tránh x86. Arm là một thứ tốt khác nhưng có nhiều hướng dẫn và tùy chọn hơn và có thể không phù hợp nhất như một bộ hướng dẫn đầu tiên. Thumb là một tập hợp con của tập lệnh hướng dẫn cánh tay và không tệ, trên github tôi có cả trình giả lập ngón tay cái (ngón tay cái) và trình giả lập msp430 (không được kiểm tra nhiều như ngón tay cái) là barebones, chỉ là bộ xử lý và bộ nhớ và hơn thế nữa , vì vậy bạn có thể có được tầm nhìn tốt vào những gì đang diễn ra. Một giải pháp thay thế sẽ là qemu, ví dụ như khả năng hiển thị ở đó nhưng khó hơn rất nhiều, tương tự như vậy với một giải pháp giống như qemu, sẽ mất nhiều công sức hơn trước khi bạn nhận ra nếu bạn có bất cứ điều gì làm việc.
goto mspgcc4.sf.net để xây dựng một chuỗi công cụ và / hoặc một binutils chứng khoán (./configure --target = msp430 --prefix = / Something) kết hợp với một llvm chứng khoán. Khi bạn đã sẵn sàng cho phần cứng, một bảng phát triển msp430 có giá dưới 5 đô la. Đối với các công cụ cánh tay / ngón tay cái, chỉ cần lấy phiên bản lite từ mã hóa. Một bảng cortex-m3 (ngón tay cái / ngón tay cái 2) là khoảng 12 đô la ngay bây giờ. Tôi sẽ tránh x86 và avr và những người khác như một bộ hướng dẫn đầu tiên, bạn sẽ muốn tìm hiểu những người khác để được làm tròn tốt. Bộ hướng dẫn pic cũ / gốc là một cái gì đó đáng xem là tốt. Bạn có thể tự viết một trình giả lập vào một buổi chiều cho nó cũng như tìm hiểu trình biên dịch. Tôi sẽ không học nó trước tiên, nó dạy một số điều thú vị, nhưng đồng thời không mở rộng và không nhất thiết phải đại diện cho các tính năng phổ biến bạn tìm thấy trong hầu hết các bộ hướng dẫn. Msp430 cho tôi cảm giác về pdp11, đây là bộ hướng dẫn đầu tiên tôi thực sự học được, cả hai đều có các tính năng tròn, chủ yếu là trực giao. Cả hai bộ hướng dẫn pic msp430 và microchip đều được ghi lại trên wikipedia, ít nhất là một tài liệu tham khảo, để có được toàn bộ hình ảnh lấy dữ liệu / hướng dẫn từ các nhà cung cấp sẽ mô tả từng đăng ký và chế độ địa chỉ, đặt lại / khởi động, v.v.


chỉ dành cho trình biên dịch chương trình, bạn chỉ cần binutils, ít nhất là cho arm / thumb hoặc msp430, và bạn có thể xây dựng trình biên dịch và trình liên kết. Nếu bạn muốn một trình biên dịch C mà từ đó bạn có thể kiểm tra đầu ra của trình biên dịch mã như một công cụ học tập, thì bạn cần mspgcc4 hoặc mã hóa hoặc chỉ sử dụng llvm cho cả hai.
old_timer

4

Bạn có chắc chắn muốn học hội? Bạn có thể nói tại sao không? Nó là một nhiệm vụ khá, và ngày càng ít liên quan hoặc hữu ích hơn một ngày. Đây là từ một người đã viết trong đó và thậm chí các chương trình lắp ráp bằng tay (không có trình biên dịch, trình liên kết, chỉ là một thẻ với tập lệnh).


Đây không thực sự là một câu trả lời, nhiều như một nhận xét. Tôi cũng sẽ do dự khi tin tưởng một lập trình viên nhúng C, người không muốn đi qua các phần lắp ráp bây giờ và sau đó khi cố gắng hiểu một sự kỳ lạ trong hành vi của một dự án.
Chris Stratton

4

Tôi cũng đã học được trên 68HC11 ở trường đại học. Thay vào đó họ đề xuất điều này hơn bất kỳ MPU / MCU nào khác, tôi chỉ muốn chỉ ra bảng phát triển mà chúng tôi sử dụng có chương trình giám sát trên đó. Vì vậy, từ một thiết bị đầu cuối câm, chúng tôi có thể bước qua mã và kiểm tra các thanh ghi ... Tôi đề nghị khi bạn biết bộ xử lý nào phù hợp với yêu cầu của mình, bạn cũng kiểm tra xem bảng phát triển nào có sẵn với chương trình giám sát.


Chương trình màn hình nghe có vẻ rất hữu ích. Cuốn sách nào bạn đã sử dụng để học điều này? nếu bạn phiền tôi hỏi ....

Tôi cũng đã có kinh nghiệm với 68HC11 và "Chương trình giám sát" được gọi là Buffalo Monitor . Về cơ bản, nó chỉ là một chương trình được lưu trữ trong ROM giao tiếp với PC của bạn. Bạn nhập vào một thiết bị đầu cuối và chương trình diễn giải các yêu cầu của bạn và cung cấp cho bạn thông tin trở lại. Bạn có thể kết xuất bộ nhớ vào màn hình, thay đổi giá trị bộ nhớ, hướng dẫn từng bước, v.v. Bảng chúng tôi sử dụng là cái này . Bộ điều khiển này đơn giản để học với nhưng rất cũ.
sherrellbc

... Cuốn sách chúng tôi sử dụng là cuốn sách này nếu bạn quan tâm. Tôi sẽ đề nghị đi với một bộ điều khiển hiện đại hơn như AVR; ban phát triển của họ có thể được tìm thấy ở đây .
sherrellbc

3

Tôi dạy cả PIC (lõi 14 bit) và lắp ráp ARM. Lớp PIC tôi nói rằng một khi họ đã làm chủ được sự xấu xí của kiến ​​trúc đó, họ có thể đảm nhận bất cứ điều gì khác. ARM (không phải Thumb / Cortex!) Là một kiến ​​trúc rất hay để học lắp ráp. Chúng tôi sử dụng một bảng LPC2148.


Xin chào Wouter, thật tốt khi gặp bạn ở đây!
Olin Lathrop

2

Tôi đã học lắp ráp PIC 16 bit với một DSPIC33F. Việc lắp ráp bộ xử lý khá giống C, ở chỗ nó hỗ trợ các con trỏ và ba thao tác biến (ví dụ A = B + C), giúp cho việc học và thích nghi với nó dễ dàng hơn nhiều.


1

Bạn đang nhầm lẫn vi điều khiển và vi xử lý ở đây. AVR là dòng vi điều khiển của Atmel, không phải là bộ vi xử lý. Tôi đề nghị bạn tìm kiếm đầu tiên trên wikipedia để hiểu rõ hơn về sự khác biệt giữa những điều này. Về cơ bản, vi điều khiển là một hệ thống hoàn chỉnh ít nhiều, trong khi đó bộ vi xử lý chỉ là cpu (do đó vi điều khiển có bộ vi xử lý bên trong).


Tôi biết điều đó, tôi không biết tại sao tôi không đặt nó. Ý tôi là không có nhiều hướng dẫn nói về việc thực sự kết nối MP và Bộ nhớ (như flash hoặc eeprom), v.v ...

1
Vì hầu hết các bộ vi xử lý hiện có bộ nhớ cache / bộ nhớ và một số I / O, đây là một dòng rất mờ.
kenny

1
@Sauron - Bạn có chắc bạn biết điều đó? Bạn đã sử dụng MP một lần nữa; một bộ vi điều khiển (là thuật ngữ chính xác cho một AVR và 99% thiết bị chúng ta thảo luận ở đây) hầu như luôn có bộ nhớ (cả không bay hơi, như EEPROM và Flash, và SRAM dễ bay hơi) trên tàu. Tìm hiểu để sử dụng các công cụ trên tàu trước khi bạn bắt đầu mạo hiểm vào các thiết bị ngoại vi.
Kevin Vermeer

1

Tại trường đại học của tôi, chúng tôi được dạy thiết kế / kiến ​​trúc phần cứng cùng với ngôn ngữ lắp ráp (rõ ràng là hai thứ song song) với kiến ​​trúc MIPS (hoặc có lẽ là DLX ). Kể từ đó, tôi đã học hỏi về lắp ráp PIC và AVR một chút ở trường / công việc, và tất cả chúng đều khá giống nhau. Tôi nghĩ rằng lắp ráp MIPS là một điểm khởi đầu tuyệt vời, vì ngôn ngữ rất đơn giản, cũng như kiến ​​trúc bộ xử lý.

Xem thêm: cuốn sách này . Không phải là cuốn sách hay nhất thế giới, nhưng nó là cuốn sách thiết kế máy tính tiêu chuẩn cho rất nhiều trường đại học.


Microchip PIC32 sử dụng kiến ​​trúc MIPS và khá dễ dàng để kết hợp trình biên dịch MIPS với C.
tcrosley

0

Đề nghị của tôi là bất kỳ ai sẽ bắt đầu nghiên cứu về vi điều khiển và bộ xử lý nên đọc cuốn sách đặt tên "mã ngôn ngữ ẩn của máy tính" nếu bạn nghiên cứu rằng hầu như bạn là chuyên gia về bộ xử lý và để lập trình tốt hơn, hãy sử dụng lập trình và chương trình poney prog từ atmel studio6.1 từ trang web chính thức của atmel


Vui lòng phác thảo các tính năng chính của cuốn sách và lập trình viên, điều đó sẽ làm cho OP sử dụng chính xác chúng.
Vorac

đó là tìm hiểu về một vi điều khiển được phát triển từ các hệ thống kỹ thuật số và giải thích ngôn ngữ lắp ráp
avinash

truy cập trang web này j.mp/mpcinterest để có được cuốn sách đó
avinash
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.