Tôi nên tìm hiểu bộ vi xử lý ARM nào: ARM7TDMI hoặc Cortex M3?


7

Tôi mong muốn được tìm hiểu gia đình vi điều khiển ARM7. Khi tôi tìm kiếm trên internet, tôi thấy có hai phiên bản: ARM7TDMI cũ hơn một chút (LPC21xx, v.v.) và Cortex M3 mới hơn (LPC 17xx, v.v.). Tôi hơi bối rối giữa hai điều này. Tôi muốn chọn một trong đó có thể giúp tôi được đặt vào một công ty trong tương lai. Xin hãy giúp tôi chọn một và cũng xin vui lòng cho tôi biết sự khác biệt lớn giữa cả hai phiên bản.

Câu trả lời:


13

Bạn đã tự trả lời một phần câu hỏi: Cortex là lõi mới hơn, tiên tiến hơn. Nó mạnh hơn ARM7TDMI và đồng thời sử dụng ít năng lượng hơn: gấp đôi DMIPS / mW.
Bảng dưới đây cung cấp một cái nhìn tổng quan về sự khác biệt (từ tờ giấy trắng này ):

nhập mô tả hình ảnh ở đây

(Ngoài hiệu suất và mức tiêu thụ năng lượng), có tới 240 (!) Ngắt và độ trễ ngắt được cải thiện nhiều làm cho Cortex trở thành lựa chọn tốt hơn nhiều cho các hệ thống thời gian thực.


4
Liên quan đến thiết kế Cortex-M3 mới hơn, tôi đã thấy một số nhà sản xuất đưa các bộ phận ARM7 của họ vào danh sách "không được đề xuất cho thiết kế mới".
semaj

Một ví dụ khác là dòng SAM3S dựa trên Cortex-M3 của Atmel một phần nhằm thay thế dòng SAM7S dựa trên ARM7TDMI của họ.
Mike DeSimone

Về ngắt: Thật không may, rất nhiều nhà cung cấp không sử dụng hơn 31 ngắt. (Tôi đã thấy một chip sử dụng một ngắt Cortex-M3 cho tất cả các ngắt PIO, sau đó sử dụng các thanh ghi bên ngoài để ánh xạ các ngắt PIO riêng lẻ.) kích thước bằng bốn byte.
Mike DeSimone

Có phải chỉ có tôi, hoặc thật ngạc nhiên khi họ chuyển từ von Neumann sang kiến ​​trúc Harvard? Đó là một sự khác biệt khá cơ bản.
Nick Johnson

@Nick - Chắc chắn là vậy, nhưng tôi không thể nói nó đóng góp bao nhiêu vào hiệu suất được cải thiện, hoặc bao nhiêu là do những thay đổi khác.
stevenvh

10

Tại sao không học cả hai? Bạn có thể nhận được một bảng cortex-m3 với giá khoảng 12 đô la, và một cái gì đó giống như một chiếc sam7 với giá khoảng 35 đô la. Theo như ARM đi nếu bạn muốn có kiến ​​thức tốt, hãy bắt đầu với ARM7TDMI, tìm hiểu ARM và ngón tay cái, sau đó lấy ngón tay cái đến vỏ não-m3 và sau đó bổ sung ngón tay cái2. ARM không sản xuất chip họ bán lõi xử lý, nhà cung cấp bọc nước sốt đặc biệt của họ xung quanh nó. Nó là tốt để lao vào các nhà cung cấp khác nhau với cùng lõi. I / O và trên các thiết bị ngoại vi chip sẽ tạo ra hoặc phá vỡ bạn, và việc có thể chọn đúng nhà cung cấp và / hoặc tránh một nhà cung cấp không phù hợp với nhiệm vụ là có giá trị.

Thỉnh thoảng tôi có liên quan đến các quyết định tuyển dụng, và tôi đồng ý với các dấu hiệu. Đó không phải là tất cả về việc biết một lõi thực sự tốt, còn rất nhiều điều cần biết, đừng hiểu quá cụ thể. Hãy hỏi các bậc thầy 6502 (những người chưa tiến lên với ngành công nghiệp) sự nghiệp của họ đang diễn ra như thế nào. Một số rất nhỏ rất tốt phần còn lại, không quá nhiều. Tôi muốn thấy một ứng cử viên có thời gian riêng của họ và không chỉ cho một lớp đại học, đi ra ngoài mua một vi điều khiển hoặc bảng eval nhỏ, và thực sự đã làm một cái gì đó với nó. Ngay cả khi nó được học cách nháy đèn led bốn cách khác nhau bằng cách sử dụng perhipemony nội bộ. Tôi thích một người đã thử nhiều hơn một bộ xử lý và nhà cung cấp, nhưng chúng tôi không thể có mọi thứ chúng tôi muốn. Bạn có thể nhận một bảng dữ liệu hoặc tập lệnh hoặc chuỗi công cụ khác nhau nhanh và tốt như thế nào có thể có giá trị hơn bao nhiêu của một chuyên gia bạn trong một lõi cụ thể từ một nhà cung cấp cụ thể. Một số nhà cung cấp có dữ liệu và sơ đồ tốt, v.v. một số thì không, bạn cần biết rằng tất cả các hướng dẫn tham khảo đều có lỗi và có thể hack và google theo cách của bạn thông qua các điểm yếu trong tài liệu tham khảo.

ARM là nơi hiện tại, sẽ thật ngu ngốc nếu không biết gì về lõi của họ và các nhà cung cấp chip lớn sử dụng lõi của họ. Nhưng cũng giữ cho đôi mắt của bạn mở để cũ hơn và mới hơn và khác nhau là tốt. 8051 vẫn được sử dụng ở một số nơi, nó sẽ không chết. Microchip vẫn bán pic của. Dù sao thì avr vẫn phổ biến (atmel thực sự biết cách tạo ra những khách hàng hài lòng) và arduino đã đưa sự phổ biến đó lên một cấp độ hoàn toàn mới. Không có gì gần với ARM nói chung, nhưng ARM không phải là người chơi duy nhất trong các thị trường khác nhau mà nó tham gia.

Sparkfun có một số bảng với giá dưới 50 đô la, tôi khuyên bạn nên lấy một ít. Các bảng tiêu đề olimex là tốt, ví dụ sam7s-h64 hoặc 256. st có bảng khám phá stm32 của họ (KHÔNG TÌM HIỂU VỚI Phát hiện STM8, dòng bộ xử lý hoàn toàn khác nhau) trong khoảng 10 đô la. Dưới 5 đô la, bạn không thể tránh được một hoặc hai bệ phóng msp430 (không phải là một nhánh mà là một lõi vi điều khiển khác, tốt, tốt). Bạn có thể có được đôi chân của mình với coridium armmite, hoặc dấu chân phong, arduino nhưng dựa trên ARM không avr. Một người khác muốn cung cấp hộp cát cho nhà phát triển. mbed2 thực sự dễ sử dụng, lpc nổi tiếng trong thế giới vi điều khiển cánh tay, nhưng chúng có lẽ là lựa chọn ít được yêu thích nhất của tôi, hãy thử một vài lựa chọn khác nhau, ít nhất là một trong những lựa chọn từ atmel. Stellaris bây giờ thuộc sở hữu của ti là người đầu tiên ra mắt với vỏ não-m3, ngoài loạt 800 mà tôi bị gạch trong vòng một hoặc hai giờ ngay lập tức vì tôi không chú ý đến 17 nhãn cảnh báo ở khắp mọi nơi, tôi thích tất cả các bảng của họ mà tôi đã thử. Ít nhất là để nói chuyện với các thiết bị ngoại vi và tìm hiểu về oled. Nếu bạn muốn nối vi điều khiển lên một cái gì đó không có trên bảng thì bảng stellaris có lẽ là lựa chọn cuối cùng. Họ đã nhai gần như mọi pin I / O và bạn sẽ cắt dấu vết để lấy lại, về cơ bản trả tiền cho những thứ trên bảng mà bạn không có ý định sử dụng, chỉ cần lấy coridium armmite pro hoặc bảng tiêu đề olimex hoặc đại loại như thế. tránh l े o, nó được nhắm mục tiêu cụ thể đến một nhà cung cấp công cụ, thậm chí không đến gần nó, không không ... đi với mbed2 nếu bạn thực sự muốn có một lpc cortex-m3, và bạn thậm chí không phải bận tâm với hộp cát mà họ khuyến khích, biên dịch tệp .bin của bạn với bất kỳ công cụ nào bạn thích và chỉ cần sao chép nó vào thứ trông giống như ổ USB / ngón tay cái và nhấn nút đặt lại. Đó là vẻ đẹp của mbed2, bạn hoàn toàn tự do sử dụng bất kỳ hệ điều hành máy chủ và công cụ phát triển nào bạn thích. Tiêu cực là võng mạc đốt đèn led màu xanh. Tôi đã phải đổi mỏ lấy đèn led xanh để tránh những cơn đau nửa đầu tức thời.

Đọc lại câu hỏi của bạn. Của gia đình lõi ARM hiện tại. ARM7TDMI truyền thống hơn, nó hỗ trợ tập lệnh 32 bit cơ bản. ARM lấy tập lệnh đó và tạo một tập lệnh ARM giảm, được gọi là tập lệnh ngón tay cái. Các hướng dẫn ngón tay cái ánh xạ một đến một với các hướng dẫn ARM (điều ngược lại là không đúng). Vì vậy, lõi chỉ phải xử lý các hướng dẫn ARM, các hướng dẫn ngón tay cái được dịch sang các hướng dẫn ARM trên đường vào ống. Một thiết kế / ý tưởng không tồi. Nhìn vào sự tiến bộ của gameboy, các thanh kiếm 16 bit ở khắp mọi nơi, cắt giảm chi phí, v.v ... Bây giờ GBA là ngoại lệ cho quy tắc rằng ngón tay cái chạy chậm hơn cánh tay, không phải vì dịch sang hướng dẫn của cánh tay mà vì nó là một tập hợp con điều đó hạn chế bạn một nửa các thanh ghi và hai lệnh toán hạng thay vì ba, Vì vậy, cần nhiều hướng dẫn để làm điều tương tự trong ngón tay cái như trong cánh tay. (Mặc dù nhị phân ngón tay cái thường nhỏ hơn một chút). Bước tiếp theo là thumb2, về cơ bản đây là độ dài chỉ dẫn thay đổi, một số hướng dẫn là 32 bit, khoảng 16 bit, chúng tạo ra sự cân bằng giữa một số điểm yếu của bộ hướng dẫn ngón tay cái và độ mạnh của cánh tay. các nhị phân không nhỏ, nhưng không lớn bằng cánh tay, do đó, với hiệu suất đạt được là hấp dẫn đối với vi điều khiển. Một điều khác họ đã làm là tạo ra các lõi cortex-m này chỉ bằng ngón tay cái2, chúng không có lõi cánh tay được chôn bên trong, những lõi này xuyên qua và qua ngón tay cái2. nạc và có ý nghĩa. Bây giờ chúng cũng thực hiện ngón tay cái, vì vậy bạn có thể sử dụng các công cụ chỉ dùng ngón tay cái mà bạn đã học được từ ARMv4T (arm7tdmi). Nếu bạn không hoạt động ở cấp độ ngôn ngữ lắp ráp, MOST của điều này hoàn toàn không quan trọng với bạn, phần có thể quan trọng là một số bit yêu cầu lắp ráp, như bảng ngắt / ngoại lệ hoàn toàn khác nhau trên dòng cortex-m so với lõi ARM truyền thống. Nếu bạn đang sử dụng hộp cát của ai đó thì bạn thậm chí sẽ không thấy điều đó. Nếu không viết trình biên dịch chương trình thì điều bạn cần học là làm thế nào để sử dụng trình biên dịch chéo và có thể các tập lệnh liên kết. Với codourcery tạo ra một công cụ gcc tốt cho cánh tay mà hầu hết được thực hiện cho bạn. Bạn có thể muốn đi xa để hiểu rằng những thứ như ARM7 và ARMv7 là hai thứ hoàn toàn khác nhau, ARM7 là ARMv4, ARMv7 ở phía mới hơn. Cũng biết rằng ARMv5, ARMv6, ARMv7 đều đã thêm các hướng dẫn mới và tìm hiểu cách nói với trình biên dịch mà bạn có lõi để có thể đưa ra lựa chọn tốt hơn bằng cách sử dụng các hướng dẫn mới hơn, cho hiệu suất tốt hơn, tương tự như vậy, không vô tình sử dụng lựa chọn lõi sai và tạo ra các hướng dẫn không thực thi trên lõi của bạn. Cortex-m3 và bây giờ là cortex-m0 được nhắm mục tiêu vào các bộ vi điều khiển truyền thống, folks 8 bit. Dòng cortex-A là dòng cao cấp nhắm vào các điện thoại có màn hình lớn và nhảy baloney, máy tính để bàn, máy chủ, v.v. Bạn đã đề cập đến các bộ vi điều khiển để bạn có thể ở lại đấu trường ARM7 hoặc cortex-m. Tôi có một trình giả lập tập lệnh ngón tay cái (không phải ngón tay cái 2) được gọi là ngón tay cái tại github.com khởi động như cortex-m, ngoài các thiết bị ngoại vi, dễ thêm, bạn có thể lấy mã bạn học để chạy ở đó và chuyển sang vỏ não-m3 hoặc m0. qemu tạo ra một trình giả lập tốt nhưng khó hơn nhiều để xem thực thi và khó hơn nhiều để thêm các thiết bị ngoại vi vào, nhưng đồng thời hỗ trợ các bộ lệnh, arm, thumb và thumb2.

Truy cập trang web của ARM và tìm ARM ARM (Hướng dẫn tham khảo kiến ​​trúc ARM) đây là nồi nấu chảy tất cả các lõi của chúng, tại thời điểm này có rất nhiều biến thể, nó sẽ hơi phình to, vì vậy bạn cần tìm TRMs (Tham khảo kỹ thuật Hướng dẫn sử dụng) cho các lõi cụ thể. Cụ thể là vỏ não-m3, bạn thực sự muốn có TRM cho ARMv7M Tôi nghĩ rằng vỏ não-m3 được gọi. Nó giúp tách ngón tay cái2 khỏi ARM ARM. Hiểu được quá trình khởi động của vỏ não-m3 và cách nó thay đổi từ nhánh 32 bit là tôi cũng tin vào TRM, có lẽ nó chỉ có trong TRM. Một điều cần biết, một nhà cung cấp cụ thể sẽ mua một lõi cụ thể và rev của lõi đó. ARM có thể cải thiện lõi đó và bán rev3 chẳng hạn, nhưng nhà cung cấp với rev2 có rev2. Mặc dù ARM ' Trang web của s hiển thị TRM cho rev2 khi được thay thế bằng TR3 rev3, TRM rev2 là thứ bạn muốn vì nó phù hợp với lõi bạn đang sử dụng, đôi khi bạn có thể bị nhầm lẫn hoặc mất hoàn toàn do sử dụng TRM sai. ARM ưu tiên các nhà cung cấp không tự ghi lại các lõi mà họ muốn quản lý tài liệu, vì vậy bạn cần thu hẹp khoảng cách với những gì nhà cung cấp chip đang nói với bạn và những tài liệu trên trang web ARM sẽ nhận được. Kiểu này đang khiến Linux hỗ trợ ARM khó khăn cho các ARM cao cấp hơn. Và gần đây tôi nhận thấy một số lỗi rất lớn trong mã Linux kết nối sai errata, rev sai với nhà cung cấp sai và lõi sai. Tương tự như vậy, khởi tạo những thứ sai vì TRM sai được sử dụng để viết mã. Đó là tác dụng phụ đáng tiếc của việc có nhiều lõi được sử dụng bởi nhiều nhà cung cấp chip theo nhiều cách khác nhau, trong khi nhà cung cấp cốt lõi đó đang nhanh chóng tăng số lượng và chất lượng sản phẩm của họ. Bạn có thể làm những gì tôi làm rất nhiều thời gian, biên dịch cho chế độ tay ARMv4 hoặc chế độ ngón tay cái ARMv4 và mã đó sẽ chạy trên hầu hết các lõi tiếp theo. Thật không may, các công cụ, dựa trên gcc, vẫn có một số đau đớn và / hoặc khó chịu khi sử dụng ngón tay cái. Có một số thực hành.

xin lỗi vì phản hồi lâu, hy vọng nó hữu ích


Được rồi, wow mouser có một loạt các bảng vi điều khiển. Có MOD-MMA7260, bạn không phải sử dụng gia tốc kế, có một khám phá stm32l, giá mouser cao hơn những người khác nhưng vận chuyển của họ thấp hơn rất nhiều
old_timer

Câu trả lời tuyệt vời ở đó :)
John Burton

Này, bạn có thể giải thích về lời khuyên của bạn chống lại LPC े o không? Tôi không hiểu ý của bạn là "nó được nhắm mục tiêu cụ thể đến một nhà cung cấp công cụ." Đối với tôi, nó có vẻ như là một cách chi phí thấp để bắt đầu phát triển ARM.
Frederick

Lúc đó tôi hơi buồn vì sản phẩm chỉ được hỗ trợ bởi một nhà cung cấp. Có bộ tải khởi động thay thế, v.v ... Bây giờ một vài năm sau, với mức giá khoảng hoặc dưới 10 đô la, bạn có thể nhận được khá nhiều bảng, Nucleos từ ST, bảng khởi chạy, v.v.
old_timer

6

Không có người quản lý tuyển dụng sẽ quan tâm số phần chính xác mà bạn đã làm việc trước đây. Nếu bạn đang muốn gây ấn tượng với một nhà tuyển dụng tiềm năng, hãy chắc chắn rằng dự án bạn chọn là thú vị và bạn có thể nói rõ ràng và tự tin về nó. Bạn sẽ muốn có thể chia sẻ các mẫu công việc của bạn với nhà tuyển dụng, vì vậy hãy đảm bảo bạn chọn một dự án cho phép thực hiện điều này trong giấy phép hoặc xin phép trước khi bạn bắt đầu.

Sự khác biệt giữa các họ bộ xử lý là nhỏ vì chúng liên quan đến mục tiêu của bạn. Nhưng tôi sẽ đề nghị học phần mới hơn, vì kiến ​​thức này có thời hạn sử dụng ngắn như vậy.


4
Nếu bạn muốn thể hiện mình là một chuyên gia ARM, bạn nên chuẩn bị tốt hơn cho một số câu hỏi. Đối với một dự án, chúng tôi đã bắt đầu với Atmel ARM nhưng thấy rằng nó không thể xử lý 5000 ngắt mỗi giây do độ trễ ngắt quá cao. Nó hoạt động tốt trên một NXP. Bạn chắc chắn có thể tạo ấn tượng nếu bạn biết chi tiết như thế.
stevenvh

1

Như steven đã chỉ ra, Cortex M3 là một công cụ hiện đại hơn. Đây là một thiết bị tinh vi hơn nhiều. Nếu bạn so sánh dòng LPC21xx với LPC17xx, bạn sẽ nhận được rất nhiều tính năng bổ sung bao gồm các bộ nhớ ngoài, DMA, nhiều MHz, ethernet, USB, v.v. Đó là một thiết bị hoàn thiện hơn nhiều.

Tôi đã thực hiện một dự án với LPC2129 cho kỳ thực tập của mình. Nếu bạn đã làm việc với như ATMEGA, dòng PIC18, RAM 16KB và flash 128KB thì có vẻ rất nhiều. Trên thực tế, bạn có thể viết phần mềm mạnh hơn nhanh hơn thực sự, nhưng RAM sẽ hết nhanh nếu bạn phải thực hiện bộ đệm EEPROM (để cải thiện tốc độ xử lý dữ liệu), bộ đệm UART để xử lý gói, mã GUI (đang hoạt động với màn hình LCD đồ họa màn hình) vv Tôi cũng nhận thấy rằng tôi đã sớm thiếu một số thiết bị .. Tôi ước có một số giao diện RAM bên ngoài hoặc thiết bị ngoại vi DMA để giúp truyền dữ liệu. 60 MHz là nhanh, nhưng nó là một ứng dụng chạy ở 'tốc độ con người', không được sử dụng trong việc điều chỉnh các quy trình.

Nói chung, hãy tìm Cortex M3 trong khi bạn vẫn có thể lựa chọn miễn phí (LPC1759 hoặc LPC1769 trông giống như một con chip rất tốt vẫn còn trong gói DIY hợp lý). Nhanh hơn, nhiều bộ nhớ hơn, nhiều thiết bị ngoại vi hơn, nhiều ngắt hơn, ít năng lượng hơn / MHz. Thiết bị có vẻ tương tự giá. Học ARM7TDMI không phải là xấu mặc dù và sẽ học được rất nhiều về các nền tảng này.


Ưu điểm duy nhất tôi có thể thấy với ARM7 (ngoài khả năng tương thích với mã ARM7 hiện tại) là các lệnh có điều kiện là 32 bit thay vì 48, kích thước lệnh 4 byte cố định có nghĩa là các mục tiêu nhánh được tính toán sẽ tự nhiên được căn chỉnh toàn bộ mà không cần đệm NOP và thời gian chỉ dẫn khi chạy từ RAM có thể dự đoán được và không phụ thuộc vào vị trí.
supercat

1

Câu trả lời thực sự phụ thuộc vào lĩnh vực công nghiệp mà bạn muốn tham gia. Nhìn những gì họ đang sử dụng hiện tại và đi cho họ. Một số ví dụ..

Highend Consumer Electronics như điện thoại di động và các thiết bị khác - lõi Cortex rất tốt

Các thiết bị điện tử tiêu dùng thấp như đồ chơi đơn giản và các thiết bị có giá trị thấp - lõi 8 bit và 16 bit như Atmel AVR hoặc Microchip PIC là lựa chọn tốt.

Ô tô như bộ điều khiển cơ thể và bảo mật - Các lõi cũ và đã được chứng minh như PowerPC là những lựa chọn tốt.


oxakhil hỏi về ARM7TDMI so với Cortex, không phải là AVR hay PIC.
stevenvh

2
@stevenvh, đó là sự thật. Ông cũng hỏi ai nên học với mục đích để có được một vị trí trong tương lai. Anh ấy đã không đề cập đến ngành mà anh ấy muốn nhắm mục tiêu. Chẳng có nghiên cứu tốt về micro ARM nếu anh ấy muốn làm việc trong ngành hàng trắng chẳng hạn.
tehnyit

1
Đừng đánh giá thấp phạm vi của ARM. Các nhà sản xuất như NXP đang tấn công mạnh mẽ vào thị trường 8 bit với Cortex M0 giá rẻ. Tôi đã thấy báo giá cho LPC1111 thấp tới 65 đô la. Và đó là gói HVQFN33. Tôi hy vọng M0 pincount thấp hơn trong tương lai gần, và pincount thấp hơn thường có nghĩa là giá thấp hơn.
stevenvh

1
BTW, 65 cent đó là 10k / năm. Với 100k, bạn sẽ có thể kiếm được vài xu. Cấp, bạn có thể mua PIC với giá rẻ hơn, nhưng tôi tự hỏi liệu bạn có thể điều khiển máy giặt bằng những cái này không (ví dụ 1 I / O).
stevenvh

1

Tôi nghĩ vấn đề chính là bạn đang nhầm lẫn ARM 7 với ARMv7. Bộ xử lý vỏ não sử dụng kiến ​​trúc ARMv7. ARM7TDMI sử dụng kiến ​​trúc ARMv4. Mất một lúc tôi mới nhận ra rằng 7 trong ARM7 không giống với 7 trong ARM phiên bản 7.


0

Nếu bạn muốn lập trình ARM của mình trong trình biên dịch chương trình (tôi giả sử bạn sẽ không, nhưng giả sử) bộ hướng dẫn ARM (không phải bộ Thumb của Cortexes!) Là một trong những cách tốt nhất để tìm hiểu và sử dụng. Ngoài ra, Cortexes dường như là làn sóng của tương lai cho Vi điều khiển. Đối với Vi xử lý (những thứ có hơn 200 chân trên PCB với một số chip bộ nhớ và có thể chạy Linux) Tôi không chắc lắm, Snapdragon và những thứ tương tự là bản sao ARM và dường như chiếm ưu thế trong thị trường đó (cùng với nhiều MIPS khác nhau phiên bản).

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.