Đề tài Tìm hiểu arm lpc2378

LPC2378 là một vi xử lý dựa trên nền tảng ARM và được dùng cho các ứng dụng yêu cầu

truy ền nhận dữ liệu tuần tự. LPC2378 là phương tiện lý tưởng cho các ứng dụng đa truyền thông

nối ti ếp. Nó tích hợp một giao tiếp 10/100 Ethernet Media Access Controller (MAC), giao tiếp

USB full speed với 4 kB bộ nhớ RAM, bốn cổng UART, 2 kênh CAN(Controller Area

Network), một giao diện SPI, hai cổng đồng bộ nối tiếp (SSP), ba cổng giao tiếp I2C, một giao

tiếp I2S, một Minibus và một điều khiển bộ nhớ bên ngoài (EMC).

pdf23 trang | Chia sẻ: luyenbuizn | Lượt xem: 1477 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Đề tài Tìm hiểu arm lpc2378, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG BÁO CÁO THIẾT KẾ HỆ THỐNG NHÚNG ĐỀ TÀI : TÌM HIỂU ARM LPC2378 Giáo viên hướng dẫn: TS. Nguyễn Ngọc Minh Nhóm sinh viên: 1. Nguyễn Gia Thắng 2. Nguyễn Xuân Thống 3. Nguyễn Văn Việt 4. Bùi Văn Linh HÀ NỘI 2011 1. Tổng quan về vi điều khiển LPC2378 LPC2378 là một vi xử lý dựa trên nền tảng ARM và được dùng cho các ứng dụng yêu cầu truyền nhận dữ liệu tuần tự. LPC2378 là phương tiện lý tưởng cho các ứng dụng đa truyền thông nối tiếp. Nó tích hợp một giao tiếp 10/100 Ethernet Media Access Controller (MAC), giao tiếp USB full speed với 4 kB bộ nhớ RAM, bốn cổng UART, 2 kênh CAN(Controller Area Network), một giao diện SPI, hai cổng đồng bộ nối tiếp (SSP), ba cổng giao tiếp I2C, một giao tiếp I2S, một Minibus và một điều khiển bộ nhớ bên ngoài (EMC). 1.1 Tổ chức bộ nhớ và địa chỉ của các thiết bị ngoại vi. Bộ xử lý ARM có thể quản lý một không gian địa chỉ bộ nhớ 4 GB. Bảng sau đây thể hiện sự phân bố địa chỉ của vùng bộ nhớ trong các thiết bị ARM: Note: GPIO: General Purpose Input Output: các cổng ra vào chung AHB: Advanced High-performance bus: Bus hỗ trợ hiệu suất cao APB: Advanced Peripheral Bus: Bus hỗ trợ ngoại vi Memory map LPC2300 quản lý chặt chẽ từng vùng nhớ riêng biệt. Bảng sau thể hiện toàn bộ không gian địa chỉ. Vùng nhớ chứa địa chỉ vector ngắt phục vụ cho việc đánh lại địa chỉ nhớ, vấn đề này sẽ được đề cập trong phần sau. Note: non-volatile memory: bộ nhớ không thay đổi được Reserved address space: không gian dành riêng cho địa nhỉ Tất cả các địa chỉ đăng ký ngoại vi được gán liên kết (đến ranh giới 32 bit) không phân biệt kích thước của chúng. Điều này giúp cho phần cứng byte lập bản đồ làn đường đó sẽ được yêu cầu để cho phép byte (8 bit) hoặc một nửa từ-(16 bit) truy cập để xảy ra ở ranh giới nhỏ hơn. Ý nghĩa của việc này là từ từ và nửa đăng ký phải được truy cập tất cả cùng một lúc. Ví dụ, nó không thể đọc hoặc viết các byte trên của một từ đăng ký riêng biệt. Cả hai vùng nhớ cho thiết bị AHB(Advanced High-performance bus) và APB(Advanced Peripheral Bus) để có không gian là 2MB và chia đều cho 128 thiết bị., mỗi thiết bị được phân 16 KB. Điều này đơn giản việc giải mã địa chỉ cho từng thiết bị. Địa chỉ thiết bị APB. Bảng sau thể hiện phân vùng của thiết bị APB. 1.2 Mô tả pinout LPC2378 gồm 144 chân Sau đây là một số chân và tác dụng của chúng Cách thiết lập pin cho LPC2378 Mỗi chân trong LPC2378 có thể có nhiều chức năng hoặc input, output hay làm 1 chức năng cụ thể của 1 phần nào đấy. Ví dụ như : P0[1] (port số 0 chân số 1) có thể làm chức năng input, output căn bản hay cũng có thể làm chức năng là chân nhận dữ liệu của Control Area Network 1 (CAN1). Ở đây là chúng ta biết mỗi chân có nhiều chức năng và khi muốn sử dụng chức năng nào thì ta phải thiết lập 1 số giá trị nhất định cho thanh ghi nào đó. Như vậy ta sẽ phải có 1 thanh ghi để chọn chức năng cho từng chân. Thanh ghi đó là PINSEL, có 10 thanh ghi PINSEL0 -> PINSEL9. Mỗi 1 chân của LPC2378 sẽ tương ứng với 2 bit trong 1 thanh ghi này. PINSEL Chức năng 00 Chức năng input,output căn bản 01 Chức năng số 1 10 Chức năng số 2 11 Chức năng số 3 Mọi chân đều có thể làm input,output, tùy vào từng chân mà chức năng số 1,2,3 sẽ là gì. Lấy ví dụ như ta muốn set chân P0.2 là TXD và P0.3 là RXD còn các chân còn lại giữ nguyên thì ta sẽ dung câu lệnh : PINSEL0 |=0x50; //set bit 4 và số 6 giữ nguyên các bit còn lại PINSEL0 &=~0xA0; // xóa bit số 5 và số 7 giữ nguyên các bit còn lại 1.3 Các giao tiếp trên LPC2378 1.3.1 Ethernet Khối Ethernet chứa đầy đủ tính năng của 10 Mbps hay 100 Mbps Ethernet MAC (Media Access Controller) được thiết kế để cung cấp tối ưu hóa hiệu suất thông qua việc sử dụng DMA làm tăng tốc phần cứng. Tính năng bao gồm một bộ điều khiển rộng rãi của sổ đăng ký, một nửa hoặc toàn song hoạt động, kiểm soát dòng chảy, khung điều khiển, phần cứng tăng tốc cho truyền thử lại, nhận được gói lọc và thức tỉnh hoạt động trên mạng LAN. Khung tự động truyền tải và tiếp nhận với tan-Tập hợp tắt DMA-tải nhiều hoạt động từ CPU. Khối Ethernet và chia sẻ CPU một AHB hệ thống con chuyên dụng (AHB2) được sử dụng để truy cập vào SRAM Ethernet cho dữ liệu Ethernet, kiểm soát, và các thông tin trạng thái. Tất cả các AHB giao thông ở LPC2300 diễn ra trên một hệ thống con AHB khác nhau, có hiệu quả tách hoạt động Ethernet với phần còn lại của hệ thống. Các DMA Ethernet cũng có thể truy cập bộ nhớ off-chip thông qua bộ điều khiển bộ nhớ bên ngoài, cũng như SRAM các vị trí trên AHB1, nếu không được sử dụng bởi các khối USB. Tuy nhiên, sử dụng bộ nhớ khác với Ethernet SRAM, đặc biệt là off- chip bộ nhớ, sẽ làm chậm truy cập Ethernet vào bộ nhớ và tăng tải của AHB1. Khối Ethernet giao diện giữa một Ethernet off-chip PHY sử dụng MII (Media Independent Interface) hoặc RMII(ReduceMII)giao thức và các MIIM trên chip (Media Independent Interface) bus nối tiếp. Sơ đồ khối kiến trúc của Ethernet 1.3.2 Giao tiếp USB Các Universal Serial Bus (USB) là một bus bốn dây có hỗ trợ giao tiếp giữa một máy chủ và một hoặc nhiều (lên đến 127) thiết bị ngoại vi. Bộ điều khiển máy chủ cấp phát các USB băng thông để gắn các thiết bị thông qua một giao thức dựa trên mã thông báo. Bus hỗ trợ cắm và cấu hình năng động của các thiết bị. Mọi giao dịch được thực hiện bởi một máy chủ điều khiển. Sơ đồ kiến trúc của thiết bị điều khiển USB 1.3.3 Giao tiếp SPI (Serial Peripheral Interface) SPI là một giao diện song công nối tiếp. Nó có thể xử lý nhiều master và slave được kết nối với một Bus đã cho. Chỉ có một master duy nhất và một slave duy nhất có thể truyền dữ liệu tại một thời điểm nhất định. Trong thời gian chuyển dữ liệu master luôn luôn gửi 8 đến16 bit dữ liệu cho slave, và slave luôn luôn gửi một byte dữ liệu tới master. SCLK: clock; MOSI: Master out slave in; MISO:Master in slave out SS: Slave select 1.3.4 I2C Inter-intergrated circuit -I2C là giao thức để kết nối với các thiết bị bên ngoài, như LCD, bộ nhớ ngoài, ... -Giao tiếp chuẩn I2C, có thể thiết lập ở chế độ Master, Slave hay Master/Slave. -Cơ chế trọng tài, cho phép truyền nhận dữ liệu liên tục mà không bị gián đoạn dữ liệu. -Xung có thể thay đổi phù hợp với tốc độ truyền. -Truyền nhận 2 chiều giữa Master và Slave. -Đồng bộ bằng xung tuần tự cho phép nhiều thiết bị với tốc độ truyền nhận khác nhau giao tiếp trên cùng một kênh. Nguyên lý hoạt động của I2C Có 2 loại dữ liệu được chấp nhận trên kênh truyền I2C. * Dữ liệu được gửi từ Master đến Slave. Byte đầu tiên là địa chỉ của Slave. Sau đó là chuỗi byte dữ liệu cần truyền. Slave cần gửi trả về ACK đối với mỗi byte đã nhận. * Dữ liệu gửi từ Slave đến Master. Slave nhận byte đầu tiên, cũng là địa chỉ của Slave, được gửi bởi Master. Slave trả về ACK. Sau đó Salve gửi chuỗi byte dữ liệu cần truyền. Master cần gửi trả về ACK đối với mỗi byte đã nhận, ngoại trừ byte dữ liệu cuối cùng. Sau khi nhận tất cả các byte dữ liệu, Master sẽ gửi NACK. Master cũng là thiết bị tạo ra tất cả các xung đồng bộ và tín hiệu START / STOP. Trước khi tín hiệu START (cũng là tín hiệu bắt đầu của một quá trình chuyển dữ liệu tuầu tự khác), kênh truyền I2C sẽ vẫn được tích cực. Giao thức I2C hướng đến byte, và hoạt động ở 4 chế độ : Master truyền, Master nhận, Slave truyền và Slave nhận. LPC2378 có 3 giao tiếp I2C, riêng bộ I2C[0] có thể điều khiển tắt thiết bị LPC2378 mà không ảnh hưởng đến các thiết bị còn lại trên kênh truyền. Kết nối vật lý Sơ đồ khối của I2C. 1.3.4 Giao tiếp UART (Universal Asynchronous Receiver/Transmitter) UART : Universal Asynchronous Receiver Transmitter là giao tiếp truyền thông nối tiếp bất đồng bộ, dùng để truyền và nhận dữ liệu nối tiếp. LPC2378 hỗ trợ 4 bộ truyền nhận nối tiếp UART0, UART1, UART2 và UART3 (truyền nhận 16 byte với cơ chế FIFO). Kiến trúc của nó :  Mọi sự truyền nhận thông tin giữa CPU và UART đều thông qua APB  Việc nhận tín hiệu của UART : thông qua chân RXD và đi vào thanh ghi dịch (UnRSR) sau đó dữ liệu sẽ được chuyển qua thanh ghi chứa dữ liệu (UART RX Buffer Register FIFO) và dữ liệu sẽ ở đây chờ CPU tới đọc.  Việc truyền tín hiệu của UART : cũng tương tự như thế, CPU truyền dữ liệu vào trong buffer ở trong thanh ghi UnTHR (UART TX Holding Register FIFO), sau đó dữ liệu từ thanh ghi này được chuyển sang thanh ghi dịch (UnTSR) và từ từ truyền ra ngoài thông qua chân TXD  Về tốc độ truyền dữ liệu UART cho phép cho thiết lập tốc độ baud thông qua các thanh ghi. Và ta phải tự tìm ra tốc độ baud nào hợp lý nhất (tức xác suất lỗi trên đường truyền ít nhất) Vấn đề này sẽ được thảo luận trong phần sau.  Các sự thiết lập interrupt ở trong thanh ghi UnIER và UnIIR  Thông tin từ việc truyền nhận (2 chân TX và RX) được lưu trong thanh ghi UnLSR.  Thông tin điều khiển nằm ở trong thanh ghi UnLCR Sơ đồ khối của UART UART giao tiếp với bên ngoài qua 2 chân TXD và RXD (mũi tên màu đỏ ở trên hình) Nhìn vào sơ đồ khối ta có thể thấy UART gồm có 4 bộ chính :  Bộ Interrupt : điều khiển việc interrupt, lưu trữ status và khi nào có interrupt sẽ đẩy ra chân UnINTR  Bộ điều khiển Clock UnBRG điều khiển việc sinh ra CLK từ 2 dữ liệu vào là UnDLL và UnDLM  Bộ truyền dữ liệu : UnTX có 2 thanh ghi : thanh ghi chứa dữ liệu và thanh ghi truyền serial ra ngoài thông qua chân TXD  Bộ nhận dữ liệu : UnRX gồm có 2 thanh ghi là thanh ghi chứa dữ liệu và thanh ghi truyền serial. Dữ liệu nhận vào ở chân RXD sẽ đẩy vào thanh ghi truyền serial rồi đưa vào thanh ghi nhận dữ liệu. Ngoài ra LPC2378 còn cho t các giao tiếp khác như I2S, 2 kênh CAN, SSP… Sơ đồ khối của LPC2378 2. Tìm hiểu về lõi ARM7 2.1 Mô tả sơ đồ kiến trúc lõi, chức năng các khối Kiến trúc của ARM được thiết kế chuyên dụng cho các ứng dụng nhúng.Do đó hiên thực hóa chíp ARM được thiết kê cho các ứng dụng nhỏnhưng có hiệu năng cao tiêu thụ it năng lượng Lõi Arm được thiết kế theo kiến trúc RISC nó chứa các kiến trúc RISC chung -Các thanh ghi đồng dạng -Kiến trúc dạng Load-Strore .Các địa chỉ load/store chỉ được xác định từ nội dung các thanh ghi và các chỉ lệnh -Các kiểu đánh địa chỉ đơn giản -Các chỉ lệnh có độ dài cố định và đồng dạng do đó đơn giản hóa việc giải mã các câu lệnh -Thay vì chỉ dùng 1 chu kì xung nhịp cho tất cả các điah chỉ lệnh ARM thiết kế để sao cho tối giản số chu kì xung nhịp cho một địa chỉ lệnh do đó tăng được sự phức tạp cho các lệnh đơn lẻ Ngoài ra kiến trúc ARM có thể cung cấp : -Điểu khiển cả khối logic số học (ALU) và bộ dịch chuyển(Shifter) trong các lệnh xử lí dữ liêu để tối đa hóa việc sử dung ALU và bộ dịch chuyển. -Các chế độ địa chỉ tự tăng hoặc tự giảm để tối ưu hóa các lênh vòng lặp -Các lệnh Load /Store để tối đa dữ liêu truyền qua. Nhờ tối ưu trên nền kiến trúc RISC căn bản, lõi ARM có thể đạt một sự cân bằng giữa hiệu năng cao kích thước mã nguồn ít công suất tiêu thụ thấp. 2.2 Các thanh ghi và vai trò của các thanh ghi Lõi ARM có 37 thanh ghi trong đó có 31 thanh ghi đa dụng.Tuy nhiên tại một thời điểm chỉ có 16 thanh ghi đa dụng và 2 thanh ghi hiển thị.Các thanh ghi khác ở dạng ẩn chỉ hiển thị ở một số chế độ hoạt đông riêng. Các thanh ghi đa dụng có thể lưu trữ dữ liệu hoặc địa chỉ .Các thanh ghi này được đánh dấu bằng kí hiệu r.Tất cả các thanh ghi đều là 32 bit Trong các thanh ghi đa dụng trên, có 3 thanh ghi còn được dùng để các chức năng hoặc nhiệm vụ đăc biệt riêng:r13, r14,r15. -Thanh ghi r13 được sử dụng làm stack pointer (sp) -Thang ghi r14 được gọi là thanh ghi kết nố i(lr) chứa địa chỉ quay lại của chương trình khi chạy một chương trình con. -Thanh ghi r15 là bộ đếm chương trình (pc) và chứa địa chỉ của lênh tiếp theo. Hai thanh ghi trạng thái bao gồm thanh ghi chứa trạng thái chương trình hiện tại (cpsr) dùng để giám sát các trang thái hoạt động hiện tại và thanh trạng thái chương trình lưu(spsr) dùng để lưu trữ giá trị của cpsr khi có một trường hợp ngoại lệ xảy ra. Các thanh ghi hiện Các thanh ghi ẩn Các thanh ghi trong lõi ARM 2.3 Các ngoại lệ ,xử lí các ngoại lệ, bảng Vector ngoại lệ Ngoại lệ là rất quan trọng trong các hệ thống nhúng, không có ngoại lệ sự phát triển của hệ thống sẽ là một nhiệm vụ hết sức phức tạp. Một ngoại lệ bất kì để ngăn chăn thực thi các chương trình bình thường Ngoại lệ Mode Yêu cầu ngắt nhanh FIQ Yêu cầu ngắt IRQ SWI và RESET SVC Hướng dẫn lấy hoặc không ABT truy cập bộ nhớ Không xác định chỉ thị UND Có 7 chế độ hoạt động ngoại lệ của VXL; 6 chế độ đặc quyền (Abort, fast interrupt request, interrupt request, supervisor, system, undefined) và một chế độ ko đặc quyền user.Sơ đồ các thanh ghi và các chế độ như hình dưới. Chế độ hoạt động System sử dụng các thanh ghi ở chế độ user Các chế độ hoạt động và các thanh ghi Hoạt đông của các chế độ như sau -Bộ VXL hoạt đông ở chế độ Abort khi bộ vi xử lí không thể truy cập bộ nhớ -Bộ VXL hoạt động ở chế độ interrupt request(IRQ) và fast interrupt request(FIQ) tương ứng với hai mức ngắt của chip ARM. -Bộ VXL hoạt động ở chế đô Supervisor khi hệ thong khởi động(reset)và khi nhân của hệ điều hành hoạt động. -Bộ VXL hoạt động ở chế độ System khi hệ thống có thể truy cập và đọc ,ghi toàn bộ thanh ghi cpsr .đây là một chế độ đặc biệt của chế độ user. -Bộ VXL chuyển sang chế độ Undefined khi bộ VXL gặp một lênh không xác định hoặc không hỗ trợ. -Bộ VXL hoạt động ở chế độ User là để chạy các chương trình và các ứng dụng thông thường. Đối với từng chế độ có thể có các thanh ghi cho từng chế độ đó Bảng bảng vector chính xác với các chỉ dẫn nhánh Nó là một bảng hướng dẫn các ngành cốt lõi ARM đến khi một ngoại lệ được nâng lên. Những hướng dẫn là những địa điểm trong một phần cụ thể trong bộ nhớ và địa chỉ của nó có liên quan đến ngoại lệ. Nó luôn luôn có một chỉ dẫn nhánh tại một trong các hình thức sau đây: • B Hướng dẫn này được sử dụng để làm phân nhánh đến các vị trí bộ nhớ với địa chỉ "Add" tương đối so với vị trí hiện tại của pc. • LDR pc, [pc, # offset] Hướng dẫn này được sử dụng để tải chương trình truy cập đăng ký giá trị cũ của nó + một offset giá trị bằng "offset". • LDR pc, [pc, #-0xff0] Hướng dẫn này được sử dụng chỉ khi một bộ điều khiển ngắt có sẵn, để tải một ISR cụ thể địa chỉ từ bảng vector. Việc gián đoạn điều khiển vector (VIC) là đặt tại địa chỉ 0xfffff000 bộ nhớ này là địa chỉ cơ sở của các VIC. Các ISR địa chỉ luôn luôn nằm ở 0xfffff030. • MOV pc, # ngay lập tức Tải chương trình truy cập các giá trị "ngay lập tức". Một bảng vector chính xác với các chỉ dẫn nhánh Chúng ta có thể thông báo trong bảng vector là trường hợp ngoại lệ xử lý FIQ được đặt ở cuối vector bảng, vì vậy không cần phải có một chỉ dẫn nhánh, chúng ta có thể đặt các xử lý ngoại lệ trực tiếp xử lý như vậy có bắt đầu nhanh hơn bằng cách loại bỏ thời gian của phân nhánh. Tại các địa chỉ này chúng tôi tìm thấy một bước nhảy hướng dẫn như vậy: ldr pc, [pc, # _IRQ_handler_offset] 2.4 Tập lệnh ARM, tập lệnh Thumb, đánh giá VXL ARM sử dụng cấu trúc load-store. Điều đố có nghĩa là :tất cả các lệnh đều thực hiện trên thanh ghi.Các lệnh ARM thường có 2 đến 3 toán tử. Mặc dù vậy các phiên bản kiến trúc ARM khác nhau hỗ trợ các tập lệnh khác nhau các phiên bản mới thường tương thích nguợc với các phiên bản cũ. +Danh sách các lệnh : -Các lệnh xử lí dữ liệu -Các lệnh dich chuyển -Các lệnh số học -Các lệnh logic -Các lệnh so sánh - Các lệnh nhân -Các lệnh rẽ nhánh -Các lệnh chuyển dữ liệu Load-Store Tập lênh thumb:Một tính năng quan trọng của ARM là hỗ trợ tậo lệnh thumb . Tập lệnh Thumb bao gồm các lệnh 16 bit .Do đó chúng chiếm it bộ nhớ hơn và có hiệu năng tương đối cao hơn đối với dữ liệu 15 bít .Đối với các ứng dụng nhúng cần tối ưu bộ nhớ ,mật độ lênh rất quan trọng

Các file đính kèm theo tài liệu này:

  • pdfarmlpc2378_652.pdf
Tài liệu liên quan