Khóa luận Nghiên cứu Linux trên hệ thống nhúng và ứng dụng

Mục lục

Chương 1 Linux trên hệthống nhúng.7

1.1 Khái niệm cơbản.7

1.2 Hệ điều hành Linux nhúng (Embedded Linux).8

1.3 Real-time Linux.9

1.4 Phân loại hệthống Linux nhúng.9

1.4.1 Kích thước.10

1.4.2 Khảnăng đáp ứng theo thời gian.11

1.4.3 Khảnăng kết nối.11

1.4.4 Khảnăng tương tác với người dùng.12

1.5 Kiến trúc tổng quát của một hệthống Linux nhúng.12

1.5.1 Khối Data Acquisition.13

1.5.2 Khối Control.14

1.5.3 Khối System management.15

1.5.4 Khối User interface.16

1.6 Tổng quan vềkernel của Linux/Unix.16

1.6.1 Mô hình process/kernel:.16

1.6.2 Thi hành một process.18

1.6.3 Tái thực thi các process.18

1.6.4 Không gian địa chỉcác tiến trình:.20

1.6.5 Sự đồng bộhóa và những vùng then chốt:.21

1.6.6 Việc giao tiếp tín hiệu và liên tiến trình.22

1.6.7 Quản lí tiến trình:.23

1.6.8 Quản lý bộnhớ.25

1.6.9 Device Drivers.28

Chương 2 Thiết kếmột hệthống Linux nhúng.30

2.1 Phần cứng hỗtrợ.30

2.1.1 Kiến trúc CPU.30 U

2.1.2 Bus và các chuẩn giao tiếp.31

2.1.3 Các thiết bịlưu trữ.31

2.1.4 Kết nối mạng.32

2.2 Các công cụphát triển.33

2.3 Chọn lựa và biên dịch Linux kernel.34

2.3.1 MontaVista Linux.37

2.3.2 uClinux.38

2.3.3 Cấu hình kernel.38

2.4 Xây dựng hệthống thưmục gốc (root filesystem).40

2.4.1 Hệthống tập tin (File Systems).40

2.4.2 Các thưmục trên Linux.40

Chương 3 Kit XUPV2P và gói phần mềm phát triển của Xilinx.44

3.1 Kiến trúc phần cứng của Kit XUPV2P.44

3.1.1 Tổng quan.44

3.1.2 Khối FPGA Virtex II Pro.46

3.1.3 System ACE.47

3.1.4 Ethernet adaptor.58

3.1.5 Cấu trúc MicroBlaze.69

3.1.6 PowerPC.78

3.2 Các gói phần mềm phát triển của Xilinx.85

3.2.1 Xilinx EDK.86

3.2.2 BSB Winzard (Base System Builder).86

Chương 4 Thiết kếhệthống nhúng dùng Linux.88

4.1 Những công cụthực hiện.88

4.1.1 Hardware.88

4.1.2 Software.88

4.2 Kiểm tra kit XUPV2P.89

4.3 Thiết kếphần cứng cho hệthống với Xilinx BSB.90

4.3.1 Cấu hình sửdụng bộxửlý PowerPC.90

4.3.2 Cấu hình các thiết bịngoại vi.93

4.3.3 Cấu hình phần mềm.96

4.4 Thiết lập môi trường biên dịch chéo.98

4.5 Biên dịch nhân MontaVista Linux trên kiến trúc PowerPC405.100

4.5.1 Tải kernel source và chuẩn bịdriver.100

4.5.2 Cấu hình nhân.102

4.5.3 Tạo ACE file cấu hình cho FPGA và nạp ảnh kernel.105

4.5.4 Quá trình khởi động Linux trên kit XUPV2P.107

4.6 Xây dựng cấu trúc thưmục gốc cho hệ điều hành.108

Chương 5 Lập trình ứng dụng Server chạy trên hệthống nhúng và Client trên

Windows.112

5.1 Mô tảhệthống file server của uClinux.112

5.2 Cấu trúc lập trình:.113

5.3 Lưu đồthiết kế:.114

5.4 Chương trình File Client MP3 trên Visual C++ MFC:.115

5.4.1 Giới thiệu :.115

5.4.2 Chương trình File Client MP3:.116

5.4.3 Giao diện File Client MP3:.Error! Bookmark not defined.

Chương 6 Giới hạn của đềtài và hướng phát triển trong tương lai.118

6.1 Tổng kết những phần đã thực hiện.118

6.2 Giới hạn.118

6.3 Hướng phát triển trong tương lai.118

pdf138 trang | Chia sẻ: netpro | Lượt xem: 2459 | Lượt tải: 14download
Bạn đang xem trước 20 trang tài liệu Khóa luận Nghiên cứu Linux trên hệ thống nhúng và ứng dụng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
y là 1 IP quan trọng trong KIT XUP-II Pro Development System. 3.1.3.1 ACE Flash Memory Card: Xilinx ACE Flash memory card là 1 vùng nhớ Compact Flash device có thể biên dịch với Personal Computer Memory Card International Association ATA (PCMCIA ATA). ACE Flash card ngày nay có nhiều dung lượng như: 128MB, 256MByte, 1 GByte…Trên card có bộ điều khiển giao tiếp Protocol, có khả năng lưu trữ dữ liệu,khả năng phục hồi (retrieval), ECC, khả năng chống treo dữ liệu (defect- hanging data), nguồn cung cấp, điều khiển xung clock. Hình 3-3: Compact Flash Card Compact ACE Flash Card có thể hoạt động trong môi trường PC environment ,trong đó Compact Flash Card được xem như là 1 ổ cứng. Ngoài ra System ACE còn cho phép lập trình hệ thống FPGA trên Compact ACE Flash Card thông qua bộ điều khiển giao tiếp System ACE controller (chức năng Compact Flash to MPU interface). Cấu trúc của Compact ACE Flash File: Capacity Sector/card Head Sector/track Cylinder 128,450,560 31360 2 32 490 256,910,120 62720 4 32 490 SVTH: Trần Quang Thuận – Phan Bá Minh. - 48 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. 3.1.3.2 ACE Controller: Bộ điều khiển ACE Controller quản lý cấu hình của FPGA.Bộ điều khiển cung cấp các giao diện giữa FPGA với các tài nguyên thiết bị có trên Kit XUP.Nó có thể liên kết bên ngoài với nhiều thiết bị FPGA thông qua cổng JTAG với tốc độ giao tiếp 16Mbit/sec. Bộ ACE Controller có 3 giao diện khả năng cấu hình FPGA là:Compact Flash interface,Microprocessor (MPU) interface và Test JTAG thông qua các cổng Compact Flash, MPU và JTAG. Hình 3-4: Các giao diện của Bô ACE Controller Chức năng chính của ACE Controller là giao tiếp với Compact Flash Card thông qua Compact Flash Controller để lưu trữ các file cấu hình FPGA bên trong Compact Flash Card. ACE Controller giao diện với MPU ,giúp MPU giao tiếp với Compact Flash Card, giao tiếp với cấu hình Test JTAG và cấu hình cục bộ. Giao diện Test JTAG được sử dụng khi chúng ta thực thi Boundary_Scan System Bộ điều khiển ACE Controller có 2 nguồn điện cung cấp chính là Core Power supply (VCCL=2.5V~3.3V) và Compact Flash/Test JTAG (VCCH=3.3V) . System ACE reset: SVTH: Trần Quang Thuận – Phan Bá Minh. - 49 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. 3.1.3.3 Giao tiếp System ACE System ACE giao tiếp với Compact Flash Card bao gồm 2 bộ điều khiển là:Compact Flash Controller và Compact Flash Arbiter (toàn quyền).Compact Flash Controller dò tìm thiết bị Compact Flash Card được kết nối với kit XUP, lưu trữ tình trạng và quản lý các tiến trình Bus Cycle, trừu tượng toán học và logic của các lệnh thực thi trên Compact Flash Card.Ngoài ra giao tiếp này còn giúp khởi động mềm (soft-reset), định dạng driver, đọc và ghi sector.Bộ điều khiển Compact Flash Arbiter điều khiển các giao diện tay ba giữa Compact Flash Card, MPU và Test JTAG thông qua buffer dữ liệu của Compact Flash Card Hình 3-5: Hệ thống root dir trong Compact Flash Card Chúng ta xét xem việc 1 file cấu hình FPGA được tạo ra và giao tiếp thông qua bộ ACE Controller: SVTH: Trần Quang Thuận – Phan Bá Minh. - 50 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. file .ACE là tầng thấp nhất của 1 cấu trúc thư mục FPGA Xilinx Software sẽ chuyển dạng bitstream (download.bit) sang file .ACE.Mỗi file .ACE chứa 1 chuỗi đơn các bitstream dùng để cấu hình cho các thiết bị của 1 dòng kit FPGA. Tầng trên của ACE file là các tầng Collection.Một Collection bao gồm 8 file.ACE kết hợp với nhau thành 1 nhóm(group).Tất cả các file .ACE trong 1 Collection có thể được định địa chỉ trong môi trường System ACE và có thể được lưu trữ trong Compact Flash Card.Nhưng tại 1 thời điểm chỉ có 1 Collection được set active. 3.1.3.4 Microprocessor Interface(MPU): Giao tiếp MPU cung cấp 1 phương tiện hữu dụng trong việc quan sát trạng thái và điều khiển bộ System ACE Controller. MPU không cần thiết khi sử dụng các thuật toán thông thường nhưng khi được sử dụng, nó cung cấp một khả năng mạnh mẽ. Giao tiếp này có thể cho phép liên kết giữa các thiết bị có MPU với Compact Flash Card và hệ thống dùng FPGA. Giao tiếp MPU là tập hợp các thanh ghi mà các thanh ghi này cung cấp các phương tiện giao tiếp với hệ thống Logic điều khiển Compact Flash Card, hệ thống Logic điều khiển cấu hình và các nguồn tài nguyên khác trong bộ System ACE Controller. Có 2 điểm quan trọng trong việc sử dụng cổng giao tiếp Microprocessor là: • Để cho bộ Controller được đồng bộ chính xác MPU phải được cấp xung clock • MPU phải tuân theo giản đồ thời gian của hệ thống System ACE. Bộ giao diện MPU đa mục đích có thể update Compact Flash Card, đọc các trạng thái của ACE và truy cập trực tiếp tới cổng cấu hình JTAG thông qua các lệnh ACE Microprocessor. Giao diện này hỗ trợ truyền dữ liệu 8bit hay 16bit. Độ rộng Bus có thể được cấu hình dễ dàng. Tất cả các giao tiếp giữa ACE Controller và Microprocessor bao gồm việc truyền dữ liệu đến hoặc lấy dữ liệu từ các thanh ghi ACE register.Có tất cả 128 thanh ghi địa chỉ 8bit và 64 thanh ghi địa chỉ 16bit. Để cho việc lựa chọn dễ dàng 1 cấu hình mới từ dữ liệu trên Compact Flash Card, giao diện MPU cho phép tái cấu hình FPGA trên hệ thống Kit. SVTH: Trần Quang Thuận – Phan Bá Minh. - 51 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. 3.1.3.5 Test JTAG interface: Giao tiếp Test JTAG hỗ trợ thuật toán IEEE 1149.1 Boundary-Scan trên bộ ACE Controller và trên tất cả các thiết bị FPGA được kết nối với cổng cấu hình JTAG. Giao tiếp này được sử dụng trong việc lập trình và load cấu hình FPGA tại cổng CFGJTAG bằng các công cụ lập trình của Xilinx hay third-party JTAG. Bộ ACE Controller tuân theo hoàn toàn chuẩn IEEE 1149.1 Boundary-Scan thường được gọi dưới tên JTAG. Như hình dưới chúng ta thấy trong đó có bộ TAP (Test Access Port) là bộ giải mã lệnh.Những thanh ghi trong bộ ACE Controller hỗ trợ các lệnh Boundary-Scan. Thêm vào đó bộ ACE Controller còn hỗ trợ 1 thanh ghi nhận dạng tùy ý 32bit (optional identification register). Hình 3-6: Sơ đồ khối của giao diện Test JTAG Pins Descriptions TSTTDI(TDI) Kiểm tra dữ liệu vào TSTTDO(TDO) Kiểm tra dữ liệu ra TSTTMS(TMS) Kiểm tra chọn chế độ TSTTCK(TCK) Kiểm tra xung clock ™ Thanh ghi lệnh IR (Intruction Register): Thanh ghi IR 8bit của bộ ACE Controller được kết nối giữa TDI và TDO trong suốt 1 quá trình thực thi lệnh.Thanh ghi này được load đồng thời với 1 lệnh kết nối SVTH: Trần Quang Thuận – Phan Bá Minh. - 52 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. chuẩn cố định cho việc chuẩn bị thực thi lệnh tiếp theo .Và lệnh kết nối được đưa ra TDO trong khi 1 lệnh khác được đưa vào thanh ghi lệnh thông qua TDI. ™ Thanh ghi Boundary-Scan(Boundary-Scan Register) Thanh ghi Boundary-Scan là thanh ghi chính trong việc kiểm tra dữ liệu ,được dùng để điều khiển và quan sát trạng thái của các chân (pins) thiết bị trong suốt quá trình thực thi lệnh EXTEST và lệnh SAMPLE/PRELOAD ™ Chuỗi bit (Bit Sequence): Một chuỗi bit của thiết bị được lấy từ file Boundary-Scan Description Language (BSDL),được kèm theo khi chúng ta biên dịch 1 project trong ISE. ™ Thanh ghi nhận dạng (Identification register): Thanh ghi nhận dạng còn gọi là IDCODE là một giá trị được gán sẵn bởi nhà sản xuất. IDCODE dùng để xác định loại thiết bị và chế tạo các thiết bị đặc dùng để kiểm tra.Thanh ghi này có 32bit.Nội dung của thanh ghi có thể được kiểm tra bởi các dòng lệnh IDCODE.Thanh ghi IDCODE phù hợp với bất kỳ thành phần nào của hệ thống thông qua JTAG.Thanh ghi này có định dạng nhị phân theo mẫu sau: Version Family Array size Manufacturer Required by 1149.1 0000 0000001 00000000 00001001001 1 ™ Thanh ghi lọc (Bypass Register): Đây là thanh ghi dữ liệu trong bộ ACE Controller.Nó là thanh ghi lọc flip-flop đơn có chức năng truyền dữ liệu trực tiếp theo kiểu nối tiếp từ TDI đến TDO thông qua các lệnh lọc.Thanh ghi này được gán giá trị 0 khi bộ TAP Controller ở trạng thái UPDATE-DR. 3.1.3.6 Các chế độ cấu hình của ACE Controller: Bốn bộ giao diện ACE Controller (Compact Flash Controller interface,MPU interface,Test JTAG(TSTJTAG) interface, configuration JTAG(CFGJTAG)interface) được thiết kế để kết hợp làm các nhiệm vụ sau: • Compact Flash to configuration JTAG(CFGJTAG) setup SVTH: Trần Quang Thuận – Phan Bá Minh. - 53 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. Hình 3-7: Lưu đồ truyền dữ liệu từ CF đến JTAG(CFGJTAG) Hình 3-8: Sơ đồ đi dây CF đến JTAG(CFGJTAG) • Compact Flash to Microprosessor (MPU) setup Hình 3-9: Lưu đồ truyền dữ liệu từ CF đến MPU SVTH: Trần Quang Thuận – Phan Bá Minh. - 54 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. Hình 3-10: Sơ đồ đi dây từ CF đến MPU • Microprosessor (MPU) to Compact Flash setup Hình 3-11: Lưu đồ truyền dữ liệu từ MPU đến CF • Microprosessor (MPU) to configuration JTAG setup SVTH: Trần Quang Thuận – Phan Bá Minh. - 55 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. Hình 3-12: Lưu đồ truyền dữ liệu từ MPU đến CFGJATG Hình 3-13: Sơ đồ đi dây từ MPU đến CFGJTAG • Test JTAG(TSTJTAG) to configuration JTAG(CFGJTAG) setup SVTH: Trần Quang Thuận – Phan Bá Minh. - 56 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. Hình 3-14: Lưu đồ truyền dữ liệu từ TSTJTAG đến CFGJTAG (Bypass path) Hình 3-15: Lưu đồ truyền dữ liệu từ TSTJTAG đến CFGJTAG(Boundary-Scan path) SVTH: Trần Quang Thuận – Phan Bá Minh. - 57 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. Hình 3-16: Sơ đồ đi dây từ TSTJTAG đến CFGJTAG 3.1.4 Ethernet adaptor IP Core Ethernet Lite MAC (Media Access Controller) được thiết kế theo chuẩn IEEE 802.3 là chuẩn giao diện độc lập Media (Media Idependent Interface - MII). Ethernet Lite MAC là IP core thiết kế mềm (soft design IP core) cho việc thực thi truyền thông cho từng dòng FPGA của Xilinx.Ngoài nó ra còn hỗ trợ các thiết bị hoạt động ở tầng vật lý (PHY -Physic Layer device) trong công nghiệp và liên kết được khối xử lý bên trong FPGA thông qua Bus OPB (On-chip Peripheral Bus).IP này có khả năng giao tiếp với các đường truyền 10Mbit/sec hoặc 100Mbit/sec. 3.1.4.1 Mô tả chung: Ethernet Lite MAC giao tiếp slave OPB 32bit. Bộ nhớ được định dạng trực tiếp đến các chân I/O, có thể truyền và nhận dữ liệu 2 chiều từ cổng của nó. Giao diện MII thực hiện việc kết nối tầng PHY bên ngoài với tốc độ 10/100Mbit/sec. Có 2 cổng TX, RX với buffer bộ nhớ 2KB độc lập bên trong vùng nhớ IP core làm nhiệm vụ giữ những gói tin vào ra tạm thời. 3.1.4.2 Mô tả chức năng: OPB Ethernet Lite MAC là sự kết hợp của 2 khối IP bên trong: khối giao diện IP (IPIF) và khối IP Ethernet Lite MAC.Trong đó, khối IPIF là tập hợp các giao diện SVTH: Trần Quang Thuận – Phan Bá Minh. - 58 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. với Bus OPB.Các tập hợp con này được lựa chọn tùy theo cấu hình của IPIF nhưng cũng tùy thuộc cấu hình thứ 2 là IP Ethernet Lite MAC. Mặc dù những phần tử giao diện con trên được tách rời trong khối IPIF nhưng IP Ethernet Lite MAC đòi hỏi phải có địa chỉ tham chiếu của chúng Hình 3-17: Lưu đồ khối của OPB Ethernet Lite MAC 3.1.4.3 Giao thức Ethernet (protocol): Dữ liệu truyền thông được gói gọn trong 1 khung (frame).Từng vùng trong khung được truyền từ trái sang phải và từng bit trong vùng cũng được truyền từ trái sang phải. Vùng đầu (premble): Phần đầu của khung được sử dụng cho việc đồng bộ có độ dài 7byte với nội dung 1010101. Nếu như truyền đủ vùng preamble thì việc kết nối được diễn ra và tiếp tục truyền các vùng tiếp theo trong khung. Ngược lại thì sẽ chấm dứt vì không thể kết nối được. Trong quá trình truyền này IP Ethernet Lite MAC sẽ tự động chèn preamble vào khung. Vùng khởi động khung (start frame delimiter): Vùng khởi động này đánh dấu việc khởi động 1 khung và có giá trị 10101011.Khi khung truyền đủ vùng khởi động khung thì việc kết nối được diễn ra và SVTH: Trần Quang Thuận – Phan Bá Minh. - 59 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. tiếp tục truyền các vùng tiếp theo trong khung. Ngược lại thì sẽ chấm dứt vì không thể kết nối được. Tín hiệu nhận giá trị từ tầng PHY (RX-DV) có thể được nhận dạng trong vùng preamble hay cũng có thể được nhận dạng trong vùng khởi động khung Vùng địa chỉ đích (Destination address field): Địa chỉ đích trong khung có độ dài 6byte.Trong đó byte đầu tiên sẽ xác định địa chỉ đích là loại địa chỉ gì: (‘0’)-individual/unicast hoặc (‘1’)-group/multicast. Địa chỉ Broadcast (tất cả các bit trong vùng có giá trị là 1) là 1 địa chỉ multicast có tất cả các đích đến trong vùng LAN cục bộ. IP Ethernet Lite MAC hỗ trợ việc truyền thông và chấp nhận các gói tin dạng unicast hoặc Broadcast. Vùng địa chỉ nguồn(source address field): Có độ dài 6byte. Vùng kiểu và độ dài(Type/Length field): Vùng này có độ dài là 4byte. Giá trị chiều dài (length) sẽ cho biết số byte trong vùng dữ liệu.Giá trị này sẽ không cho biết số byte các vùng khác tiếp theo của vùng dữ liệu trong khung. Giá trị này được tham chiếu theo chuẩn IEEE 802.3 Giá trị kiểu (type) được định nghĩa theo Ethernet protocol và được tham chiếu theo chuẩn IEEE 802.3 Độ dài tối đa của vùng dữ liệu là 1500byte do đó giá trị của vùng kiểu và độ dài là 05DC Hex.IP Ethernet Lite MAC cho không cho phép chúng ta can thiệp vào vùng kiểu và độ dài mà mặc định theo chuẩn IEEE 802.3 Vùng dữ liệu (data): Vùng dữ liệu có độ dài 0Byte đến 1500Byte. Vùng thêm vào (pad): Vùng này được sử dụng để đảm bảo khung có ít nhất 64byte độ dài. Do đó, nếu vùng data là 0 byte thì vùng pad có độ dài là 46byte. Vùng FCS: Vùng FCS có độ dài là 4 byte .Giá trị của FCS được tính toán tùy theo giá trị của vùng địa chỉ đích, vùng đại chỉ nguồn, vùng kiểu và độ dài, vùng thêm vào. FCS sử dụng 32bit CRC (Cyclic Redundancy Check) để kiểm tra dư thừa với công thức sau: SVTH: Trần Quang Thuận – Phan Bá Minh. - 60 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. G(x)=x32+x26+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x1 Những bit của CRC sẽ được thế vào trong vùng FCS với các phần tử x31,x30,…,x1,x0 IP Ethernet Lite MAC sẽ tính toán với CRC. Giá trị tính toán này sẽ được qui đổi để kiểm tra việc đồng nhất độ dài dữ liệu được truyền đi hay nhận vào trong từng chu kỳ xung clock truyền/nhận Hình 3-18: Khung truyền dữ liệu trên Ethernet Chú ý: Theo chuẩn IEEE 802.3 thì cứ sau 96bit truyền phải có 1 thời gian trì hoãn như sau: 9.6uS đối với 10Mhz và 0.96uS đối với 100Mhz. 3.1.4.4 Chế độ Half-Duplex và Full-Duplex: Chế độ Half-Duplex: Khi không có sự truyền thông, IP Ethernet Lite MAC sẽ quan sát Bus OPB chờ tín hiệu CRS, tín hiệu gửi khung hay tín hiệu nhận khung từ tầng PHY bên ngoài.Tín hiệu CRS là tín hiệu báo Busy OPB Bus (CSR=’1’).Ở chế độ này ,OPB Bus sẽ chia sẻ đường truyền Bus với IP Ethernet Lite MAC. Sau khi Bus đã thông (CSR=’0’), IP Ethernet Lite MAC sẽ bắt đầu khởi động chương trình Timing Interface Gap của mình. Tiếp theo là truyền các gói khung ra tầng PHYvà sau đó sẽ reset bộ định thời của mình. Chế độ Full-Duplex: Full-Duplex không sử dụng tín hiệu từ tầng PHY bên ngoài vì Bus không được chia sẻ. IP Ethernet Lite MAC chỉ quan sát sự truyền/nhận các khung của chính nó.Sau khi bit cuối cùng được truyền đi IP Ethernet Lite MAC sẽ reset bộ định thời của mình. Chế độ Full-Duplex sử dụng phương pháp Carrier Sense Multipe Access with Collision Detection (CSMA/CD). ™ Tóm lược phương pháp CSMA/CD: Đường truyền Full-Duplex Ethernet kết nối theo dạng điểm đến điểm (point to point) giữa 2 thiết bị Ethernet, đảm bảo truyền nhận gói tin không xung đột (collision). Khi truyền, IP Ethernet Lite MAC sẽ truyền 1 thông báo cho trạm đích sau khi mà quá trình Timing Interface Gap khởi động. Sau quá trình khởi động thông báo SVTH: Trần Quang Thuận – Phan Bá Minh. - 61 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. thành công, kết nối được ưu tiên và các khung sẽ được truyền đi không xung đột với các trạm khác trong mạng với tốc độ 32bit time 10/100Mbit/s.Ngược lại nếu gặp xung đột thì sẽ gửi cho mỗi trạm trong mạng 1 thông báo jam yêu cầu được quyền ưu tiên.Nếu các trạm đang bận hoàn toàn thì sẽ không thể thực hiện được việc truyền thông. Nhưng nếu có một số trạm bận thì các trạm này sẽ gửi trả về thời gian backoff chờ cho IP Ethernet Lite MAC biết.Sau khoảng thời gian Backoff này khung của IP Ethernet Lite MAC sẽ được quyền ưu tiên nhất. • Khởi động khung: Hình 3-19: Lưu đồ truyền theo chuẩn Half-duplex (CSMA/CD) • Nhận khung: SVTH: Trần Quang Thuận – Phan Bá Minh. - 62 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. Hình 3-20: Lưu đồ nhận dữ liệu Half-Duplex 3.1.4.5 Giao tiếp với bộ xử lý (processor interface): Giao diện bộ nhớ buffer đơn IP Ethernet Lite MAC có một giao diện rất đơn giản với bộ xử lý mà không cần dùng các thanh ghi. Giao diện này thực thi giữa giao diện dữ liệu 32bit và một khối bộ nhớ cổng đôi 4K byte (dual port memory). Bộ nhớ cổng đôi gồm 2K byte dùng cho việc truyền và 2K byte cho việc nhận dữ liệu.Ngoài ra nó còn có khả năng lưu trữ 1 gói tin Ethernet có độ dài lớn nhất cho việc truyền nhận. Giao diện truyền (Transmit Interface) Dữ liệu được truyền đi phải được lưu trong bộ nhớ cổng đôi bắt đầu tại địa chỉ C_BASEADDR+0x0. Vì mỗi word được sắp xếp theo hàng dọc địa chỉ do đó 4 byte tiếp theo sẽ có địa chỉ bắt đầu tại C_BASEADDR+0x0. Bộ giao tiếp 32bit đòi hỏi tất cả 4 byte được viết cùng lúc. Trong đó không có một bit ẩn nào cả. Việc truyền dữ liệu bao gồm: 6byte địa chỉ đích, 6byte địa chỉ nguồn, 2byte kiểu và độ dài và các byte chứa dữ liệu ( từ 0-1500 byte). Vùng đầu (preamble), vùng khởi động khung và CRC không được phép truyền cho bộ nhớ cổng đôi này. Vùng địa SVTH: Trần Quang Thuận – Phan Bá Minh. - 63 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. chỉ đích, vùng địa chỉ nguồn, vùng kiểu và độ dài và vùng dữ liệu phải được đóng gói và các gói được đặt liền kề nhau trong bộ nhớ cổng đôi. Địa chỉ tại bộ nhớ cổng đôi có offset 0x07F8 được sử dụng làm một bit ngắt toàn cục (GIE bit). Khi set bit này bằng “0” thì ngắt IP2INTC_Irpt sẽ không được gọi và ngược lại. Địa chỉ tại bộ nhớ cổng đôi có offset 0x07FC là 2 bit điều khiển ( Program hay “P” và Satus hay “S”). IP Ethernet Lite MAC yêu cầy độ dài dữ liệu truyền đi được lưu tại offset 0x7F4 trước khi phần mềm set bit Status tại 0x7FC. Hình 3-21: Truyền dữ liệu tại bộ nhớ cổng đôi ™ Cách thức phần mềm truyền dữ liệu: Phần mềm sẽ lưu dữ liệu truyền vào bộ nhớ cổng đôi tại địa chỉ offset 0x0000. Phần mềm ghi độ dài dữ liệu cũng vào bộ nhớ cổng đôi tại offset 0x07F4. Phần mềm set bit Status lên “1” tại địa chỉ offset 0x7FC ( bit 31 trên bus dữ liệu). Phần mềm sẽ quan sát trạng thái của bit status và chờ cho đến khi IP Ethernet Lite MAC set bit status về “0” trước khi thực hiện việc truyền dữ liệu. Ngắt truyền và ngắt cục bộ sẽ xảy ra khi bit status về “0”. Muốn IP Ethernet Lite MAC set bit đó về “0” thì: Chèn một vùng bắt đầu và vùng khởi động khung vào trong khung. Đọc độ dài và tính toán số dữ liệu sẽ xuất ra cho bộ nhớ cổng đôi tùy theo giá trị của vùng thêm vào PAD. Dò coi có xung đột nào hay không, xem xét việc tắc nghẽn (jam) và thời gian chờ (backoff). Tính toán CRC và thêm CRC vào cuối của vùng dữ liệu Xóa bit status. Địa chỉ MAC (MAC Address) SVTH: Trần Quang Thuận – Phan Bá Minh. - 64 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. Địa chỉ MAC có độ dài 48bit, giá trị mặc định là 00-00-5E-00-FA-CE. Giá trị này có thể thay đổi bởi chương trình thực thi thông qua bộ nhớ cổng đôi. ™ Các thức phần mềm tạo ra một địa chỉ MAC: Phần mềm sẽ load một địa chỉ MAC mới có độ dài 48bit và truyền cho bộ nhớ cổng đôi tại giá trị offset 0x0000. Phần mềm sẽ ghi giá trị “1” lên bit program ( bit 30 trên bus dữ liệu) và bit status ( bit thứ 31) tại địa chỉ offset 0x07FC. Phần mềm sẽ quan sát trạng thái của 2 bit trên khi nào IP Ethernet Lite MAC set chúng về giá trị “0”. Sẽ có một ngắt xuất hiện. Giao diện nhận (Receive Interface) Khung được nhận lưu trong bộ nhớ cổng đôi tại địa chỉ offset 0x1000. Vùng đầu và vùng khởi động khung không được lưu. Tại địa chỉ offset 0x17FC (bit thứ 31 trong bus dữ liệu) được sử dụng để kiểm tra tình trạng của gói nhận có sẵn sàng thực thi bằng phần mềm hay không. Tại địa chỉ offset 0x17FC (bit thứ 28 trong bus dữ liệu) là bit ngắt nhận. Ngắt này sẽ xuất hiện bất cứ khi nào bộ nhớ cổng đôi sẵn sàng nhận nó. Khi bit status=”0” IP Ethernet Lite MAC sẽ quan sát trên mạng những gói tin có địa chỉ đích được kết nối với địa chỉ MAC hay là địa chỉ truyền thông khác. Nếu một gói tin thỏa mãn một trong 2 điều kiện này thì gói tin sẽ được nhận và lưu trữ trong bộ nhớ cổng đôi bắt đầu tại địa chỉ offset 0x1000. Khi gói tin đã được nhận IP Ethernet Lite MAC sẽ kiểm tra CRC. Nếu giá trị CRC đúng thì nó sẽ set bit status lên “1” lại. Ngược lại vẫn giữ nguyên trạng thái của bit status và tiếp tục quan sát bus. Khi bit status =”1” IP Ethernet Lite MAC sẽ không thực hiện bất cứ các thuật toán nhận nào nữa cho tới khi bit status được set về “0” bởi phần mềm. Hình 3-22: Nhận dữ liệu tại bộ nhớ cổng đôi Cách thức phần mềm nhận dữ liệu vào như sau: SVTH: Trần Quang Thuận – Phan Bá Minh. - 65 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. Phần mềm quan sát bit status cho đến khi nó được set lên “1” bởi IP Ethernet Lite MAC và đợi một ngắt nhận được khởi tạo. Phần mềm sẽ đọc dữ liệu vào bộ nhớ cổng đôi. Sau đó phần mềm xóa bit status về “0”. b) Xung clock Một thiết kế IP Ethernet Lite MAC có 3 vùng xung clock bất đồng bộ với nhau Hình 3-23: Sơ đồ khối các xung clock cấp cho IP ™ Xung clock truyền (transmit clock TX_CLK) TX_CLK được tạo bởi tầng PHY bên ngoài. IP Ethernet Lite MAC dùng xung này để truyền tín hiệu dữ liệu [TXD(3:0)] và tín hiệu điều khiển [TX_EN và TX_ER] cho tầng PHY. Vùng PHY cung cấp một chu kỳ xung clock tốc độ 2.5MHz cho 10BASE-T và 25MHz cho 100BASE-T. Xung clock này được tạo bởi thạch anh hay bộ dao động ngoài. ™ Xung clock nhận (receive clock RX_CLK) RX_CLK được tạo bởi tầng PHY bên ngoài. IP Ethernet Lite MAC dùng xung này để nhận tín hiệu dữ liệu [RXD(3:0)] và tín hiệu điều khiển [RX_ DV và RX_ER] cho tầng PHY. ™ Xung bus xử lý (processor bus clock) Các thuật toán chủ yếu của IP Ethernet Lite MAC sử dụng xung clock này. Giá trị của xung clock ≥ 50MHz cho tốc độ 100Mbit/s hay ≥ 5MHz cho 10Mbit/s. c) Các tín hiệu giao diện với tầng PHY ™ Tín hiệu TX_EN SVTH: Trần Quang Thuận – Phan Bá Minh. - 66 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. IP Ethernet Lite MAC sử dụng tín hiệu tín hiệu TX_EN để báo cho tầng PHY rằng nó đang cung cấp những nibble cho việc truyền dữ liệu trong giao diện MII. Nó được đồng bộ với tín hiệu TX_CLK. IP Ethernet Lite MAC phát ra tín hiệu TX_EN khi nhận được nibble đầu tiên của vùng đầu của khung truyền cho đến các nibble còn lại trong khung. Tín hiệu TX_EN sẽ khởi phát khi tín hiệu TX_CLK bằng “0” và không thay đổi trạng thái cho đến khi truyền hết một khung. Hình 3-24: Sơ đồ thời gian sử dụng tín hiệu TX_EN ™ Bus TXD(3:0) IP Ethernet Lite MAC điều khiển bus TXD(3:0) đồng bộ với xung clock TX_CLK. Tầng PHY sẽ truyền giá trị cho TXD(3:0) trong tất cả các chu kỳ xung clock có tín hiệu TX_EN. Hình 3-25: Bus TDX (3:0) ™ Tín hiệu RX_DV SVTH: Trần Quang Thuận – Phan Bá Minh. - 67 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. Tầng PHY phát ra tín hiệu RX_DV để chỉ thị rằng tầng PHY đang điều khiển các nibble giải mã và phục hồi trên bus RXD(3:0). Dữ liệu trên bus RXD(3:0) được nhận đồng bộ với xung clock RX_CLK. Tín hiệu RX_DV sẽ được IP Ethernet Lite MAC phát ra sau khi nhận hết các nibble của vùng đầu và được giữ nguyên trạng thái cho đến khi nhận hết khung. Để IP Ethernet Lite MAC nhận được một khung một cách chính xác thì tín hiệu RX_DV phải kéo dài trong suốt quá trình nhận khung từ vùng SFD đến hết vùng CRC. Hình 3-26: Sơ đồ thời gian sử dụng tín hiệu RX_DV ™ Bus RXD(3:0) RXD(3:0) đồng bộ với xung RX_CLK khi có tín hiệu RX_DV. IP Ethernet Lite MAC không bị ảnh hưởng bởi bus RXD(3:0) khi không có tín hiệu RX_DV. ™ Tín hiệu RX_ER RX_ER đồng bộ với xung RX_CLK. Tầng PHY phát tín hiệu RX_ER trong một hoặc nhiều chu kỳ RX_CLK để chỉ thị rằng có một lỗi nào đó được tìm thấy trong khung đang được truyền từ PHY vào IP Ethernet Lite MAC. RX_ER không ảnh hưởng đến IP Ethernet Lite MAC khi không có tín hiệu RX_DV. Hình 3-27: Nhận dữ liệu có 1 Error ™ Tín hiệu CRS SVTH: Trần Quang Thuận – Phan Bá Minh. - 68 - Nghiên cứu Linux trên hệ thống nhúng và ứng dụng. Tầng PHY phát ra tín hiệu CRS ( Carrier Sense Signal) để cho biết việc truyền và nhận đang thực hiện có liên tục hay không ở chế độ h

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

  • pdfNghiên cứu linux trên hệ thống nhúng và ứng dụng.pdf