« Home « Kết quả tìm kiếm

Nghiên cứu, áp dụng hệ thống trên chip mã nguồn mở


Tóm tắt Xem thử

- 2 1.1.1 Xây dựng một hệ thống đơn giản.
- 24 v 1.4 Bộ nhớ và một số thiết bị ngoại vi.
- 28 1.4.2 Lõi IP điều khiển bộ nhớ (memory controller IP core.
- TRIỂN KHAI HỆ THỐNG VÀ ỨNG DỤNG.
- 55 3.3 Cài đặt các hệ điều hành lên hệ thống.
- 26 Hình 1.10 Kiến trúc bộ nhớ RAM 1 cổng trên chip.
- 30 Hình 1.11 Khối điều khiển bộ nhớ bên trong hệ thống OpenRISC.
- 37 Hình 2.2 Hệ thống nền tảng máy tính.
- 46 Hình 3.1 Xây dựng hệ thống.
- 57 1 MỞ ĐẦU Ngày nay, hệ thống trên chip (SoC) càng ngày càng có nhiều ứng dụng trong mọi lĩnh vực.
- Do đó, việc thiết kế một hệ thống đơn giản, có hiệu năng cao, dễ dàng xây dựng, triển khai và phát triển với chi phí thấp luôn là một vấn đề đƣợc quan tâm.
- Cách tiếp cận trên có thể giảm thời gian, chi phí phát triển, đễ dàng cải thiện những hệ thống cũ, nâng cao chất lƣợng của chúng.
- Nhiều hệ thống trên thực tế đã đƣợc xây dựng dựa trên các lõi chip nhƣ LEON, Altera NIOS, Microblaze, OpenRISC.
- Chính vì vậy, luận văn này có mục tiêu là nghiên cứu, triển khai, áp dụng hệ thống trên chip mã nguồn mở OpenRISC, đồng thời tìm hiểu phát triển và triển khai ứng dụng phần mềm trên hệ thống.
- Luận văn bao gồm những phần chính nhƣ sau: CHƢƠNG 1: TỔNG QUAN VỀ PHẦN CỨNG CHƢƠNG 2: TỔNG QUAN VỀ CÁC CÔNG CỤ PHẦN MỀM CHƢƠNG 3: TRIỂN KHAI HỆ THỐNG VÀ ỨNG DỤNG TRÊN HỆ THỐNG KẾT LUẬN Tổng hợp các kết quả đã đạt đƣợc, đồng thời đƣa ra hƣớng phát triển tiếp theo.
- TỔNG QUAN VỀ PHẦN CỨNG 1.1 Giới thiệu chung 1.1.1 Xây dựng một hệ thống đơn giản Hệ thống nền tảng đơn giản đƣợc xây dựng nhƣ sơ đồ khối trên hình 1.1, bao gồm hai loại khối phần cứng tƣơng ứng với 2 loại màu khác nhau.
- Hình 1.1 Sơ đồ khối hệ thống nền tảng OpenRISC 3 1.1.2 ORPSoC ORPSoC là môi trƣờng phát triển, kiểm chứng các lõi IP và thiết kế SoC trên nền tảng OpenRISC.
- Kiến Trúc Phần Cứng ORPSoC ORPSoC là hệ thống tham chiếu chuẩn cho OR1200, bao gồm nhiều phiên bản có thể tổng hợp đƣợc một cách dễ dàng và phần mềm kiểm tra cho nhiều thiết bị ngoại vi khác nhau.
- Sử dụng giao diện dòng lệnh (command line interface) để mô phỏng và tổng hợp khiến cho việc thực hiện một dự án có thể tự động hóa một cách dễ dàng, có thể tăng hiệu quả làm việc của ngƣời sử dụng nếu ngƣời đó đã quen với hệ thống.
- ORPSoC đƣợc xây dựng để trở thành một hệ thống hoạt động ổn định, nhanh và mạnh mẽ.
- Tuy nhiên, tài liệu đƣợc coi là một nhân tố quan trọng đối với ORPSoC, đƣợc cung cấp dƣới dạng hệ thống tài liệu GNU Texinfo.
- Mô phỏng 5 Những ngƣời phát triển ORPSoC đã cung cấp môi trƣờng mô phỏng cho các hệ thống khác nhau, nhƣng chúng lại có chung các phần mềm kiểm tra và driver.
- Với các testbench, phần mềm hiện tại, ngƣời dùng có thể thay đổi hệ thống mà không gây ra tình trạng mà tính năng đƣợc kiểm tra không hoạt động đúng nhƣng kết quả kiểm tra vẫn là thành công.
- Công cụ verilator có thể đƣợc sử dụng để tạo ra một mô hình C++ cycle-accurate.
- Gate level with RTL Một số đoạn mã mô phỏng có khả năng mô phỏng netlist của hệ thống ở mức cổng, hoặc từng module riêng biệt.
- Ngƣời phát triển board có thể tự xây dựng 6 phiên bản driver, công cụ riêng cho board của mình, thay cho các công cụ sẵn có.
- Từ đó, các công cụ kiểm tra có thể kiểm tra xem các tính năng của OR1200 đã đƣợc sử dụng trong thiết kế hay chƣa và kiểm tra chúng.
- Về nguyên tắc, nó có thể hỗ trợ các công cụ riêng biệt, tƣơng thích với một lõi CPU nhất định, đƣợc sử dụng trong quá trình phát triển và kiểm tra hệ thống.
- ORPSoC V2 là một dự án nền tảng mạnh mẽ cho công cuộc phát triển hệ thống trên chip dựa trên vi xử lý OpenRISC, nó đƣợc xây dựng khá toàn diện về tổ chức và 7 các tính năng nhƣ đã trình bày ở trên.
- Các hệ thống trên chip dựa trên vi xử lý OpenRISC phát triển tiếp theo đều dựa trên hệ thống phiên bản cũ, chỉ khác về cách thức xây dựng và sử dụng.
- Phiên bản mới này đánh dấu sự phát triển tiếp theo cho hệ thống thiết kế trên chip chuẩn của OpenRISC, trong đó tập trung vào tính mềm dẻo, linh hoạt và chuyên nghiệp cao trong việc sử dụng mã nguồn, xây dựng hệ thống.
- OpenRISC 1200 có thể đƣợc ứng dụng trong hệ thống nhúng, các hệ thống cầm tay và hệ thống viễn thông.
- Ngƣời sử dụng có thể tùy chỉnh các đặc tính chính của nhân.
- Bộ dấu phẩy động (FPU): Phần này đƣợc xây dựng dựa trên hai bộ xử lý dấu phẩy động trên opencores.org - Đơn vị hệ thống (System Unit): Kết nối tất cả các tín hiệu của CPU/FPU/DSP mà chƣa đƣợc kết nối bằng lệnh và giao diện dữ liệu (data interface.
- Ngoại lệ (exceptions): Với OpenRISC 1200, ngoại lệ bao gồm: ngắt ngoài, lỗi bên trong (vd: sai opcode), lệnh gọi hệ thống (system call.
- Cấu hình này có thể tùy chỉnh đƣợc theo bảng sau đây.
- Cache lệnh có mối liên hệ mật thiết với giao diện ngoài nhằm cho phép truy cập vào chức năng điều khiển bộ nhớ hệ thống (system memory controller) một cách hiệu quả.
- Hình 1.5 Bộ điều khiển ngắt lập trình đƣợc Tick timer Bộ phận này là một bộ timer sử dụng đồng hồ RISC và đƣợc hệ điều hành sử dụng để đo thời gian một cách chính xác và đặt lịch trình cho các hoạt động của hệ thống.
- Timer có thể chạy liên tục hoặc khởi động lại.
- 15 1.2.3 Hoạt động 1.2.3.1 Reset OR1200 có hai tín hiệu reset, một loại có thể đƣợc ra lệnh bởi phần mềm và loại kia nằm ở mức hệ thống cao hơn.
- Có thể đọc và ghi các thanh ghi này qua giao diện dành cho phát triển.
- Địa chỉ load/store và dữ liệu đƣợc lƣu có thể truy cập qua giao diện dành cho phát triển.
- Bảng thời gian thực hiện các lệnh dấu phẩy động: Lệnh Số chu kì Cộng/trừ 10 Nhân 38 Chia 37 So sánh 2 Chuyển đổi 7 Bảng 1-4 Thời gian thực hiện các lệnh đấu phẩy động Đơn vị hệ thống Khối này điều khiển hệ thống, các thanh ghi đặc biệt, thực hiện các lệnh “l.mtspr”, “l.mfspr”.
- Dữ liệu có thể đƣợc ghi vào cache dữ liệu dƣới dạng word, half-word hoặc byte.
- 1.3 Chuẩn giao tiếp WISHBONE và lõi IP CONMAX Wishbone là một đặc điểm kỹ thuật của một hệ thống System-on-Chip, là bus standard giống nhƣ bus AMBA của ARM.
- Vì vậy Wishbone rất quan trọng trong hệ thống.
- Phần này trình bày các kiến thức liên quan đến WISHBONE và lõi IP CONMAX 1.3.1 Giới thiệu 1.3.1.1 Lịch sử phát triển Nhƣ đã biết, hệ thống đa lõi xử lý (multiprocessor systems) xuất hiện nhằm cải thiện hiệu năng của hệ thống vi xử lý, giúp các thiết bị ngoại vi có thể hoạt động song song và về lý thuyết, tần số có thể đƣợc hạ xuống.
- Tuy nhiên vấn đề đặt ra là Bus giới hạn hiệu suất trong hệ thống đa lõi, chỉ một bộ vi xử lý có thể truy cập tới các thiết bị tại một thời điểm.
- Trong thực tế số lƣợng bộ vi xử lý trong một hệ thống liên tục tăng, kết quả là Bus đƣợc phát triển thành một mạng lƣới.
- Luận văn này, không tập trung vào việc thiết kế một bus kết nối, thay vào đó sử dụng các lõi IP CONMAX của cộng đồng Opencores để kết nối các lõi IP tổ chức lên hệ thống.
- Điều này giúp tiết kiệm rất nhiều thời gian và làm cho hệ thống đáng tin cậy hơn.
- 1.3.1.2 Ưu điểm WISHBONE tổ chức lên hệ thống System-on-chip và tái sử dụng dễ dàng bằng cách tạo ra một chuẩn giao thức trao đổi dữ liệu.
- Kiến trúc Master / Slave cho các thiết kế hệ thống rất linh hoạt.
- Nhóm tín hiệu 1 CLK_I: Tín hiệu clock đầu vào hệ thống RST_I: Tín hiệu reset hệ thống Clock và Reset những tín hiệu cơ bản nhất mà tất cả các giao diện Wishbone cần phải có.
- Khi transaction Read/Write xảy ra , LOCK có thể đƣợc sử dụng cùng với các CYC tổ chức một giao dịch không bị gián đoạn.
- Lõi CONMAX hỗ trợ lên đến 8 Master và 16 Slave, kèm theo 4 cấp độ ƣu tiên, đủ để xây dựng một mạng lƣới hệ thống khá phức tạp.
- Sử dụng lõi này sẽ tiết kiệm đƣợc rất nhiều thời gian cho các nhà thiết kế về quá trình tổ chức các module trong một hệ thống.
- 16 Slave có thể đƣợc cấu hình riêng trong tệp thanh ghi (Register File).
- 1.4 Bộ nhớ và một số thiết bị ngoại vi Trong phần trƣớc, hai module quan trọng của hệ thống phần cứng là vi xử lý OpenRISC và lõi IP kết nối WishBone đã đƣợc giới thiệu khá chi tiết.
- Tổng quan về kiến trúc hệ thống phần cứng đã đƣợc trình bày ở phần đầu của chƣơng này – xem hình 2.1.
- Có thể thấy lõi IP CONMAX WISHBONE xây dựng nên mạng lƣới Wishbone cho toàn bộ hệ thống.
- Chúng là các lõi IP có chất lƣợng rất tốt, giúp nhanh chóng thiết kế hệ thống.
- Ngoài ra, on-chip RAM là một lõi IP của ALTERA có thể cấu hình từ ngƣời sử dụng.
- Nó có thể sử dụng để kiểm tra hoặc điều chỉnh dữ liệu trong bộ nhớ RAM on-chip một cách tự động.
- Có thể đƣợc lấy ra từ Quartus II.
- Với sự giúp đỡ của lõi IP điều khiển bộ nhớ (Memory Controller), chúng ta có thể dễ dàng sử dụng đƣợc các bộ nhớ RAM bên ngoài này cho hệ thống.
- 32 Hình 1.11 Khối điều khiển bộ nhớ bên trong hệ thống OpenRISC Nội dung của phần này không phân tích kiến trúc bên trong và thiết kế HDL của lõi IP điều khiển bộ nhớ mà chỉ tập trung vào giải thích thêm việc sử dụng IP core đó.
- Nhờ đó, không mất thêm thời gian nào cho việc kiểm chứng lõi IP trƣớc khi tích hợp vào hệ thống.
- Bên cạnh đó, việc sử dụng lõi IP để quản lý các bộ nhớ SDRAM, SRAM làm việc với hệ thống OpenRISC chỉ tốn một khoảng thời gian nhỏ (khoảng 1 tuần), trong khi nếu phải viết khối điều khiển bộ nhớ cho SDRAM, thực hiện đọc/ghi bộ nhớ, làm tƣơi … thì có thể mất khoảng thời gian rất lớn ngay cả đối với kĩ sƣ giàu kinh nghiệm thiết kế ip core.
- Đối với hệ thống nhúng, UART là cách đơn giản nhất và giải pháp đƣợc lựa chọn hàng đầu để thiết lập một kết nối giữa máy tính PC và các board.
- Với kết nối nối tiếp, có thể sử dụng nhiều phần mềm terminal trên PC để điều khiển và gỡ lỗi trực tiếp hệ thống.
- UART16550 có giao diện WISHBONE, dễ dàng tích hợp vào hệ thống OpenRISC.
- Điều này khiến UART16550 phù hợp cho các nền tảng sử dụng kết nối WISHBONE bên trong ví dụ nhƣ hệ thống OpenRISC.
- Có thể nêu bật một số tính năng của lõi IP này nhƣ sau: 35 - Hỗ trợ trên 32 cặp đầu vào/ đầu ra chung.
- Hỗ trợ cổng 2 chiều - Có giao diện WISHBONE, dễ dàng làm triển khai cùng với bus WISHBONE hoặc hệ thống dựa trên OpenRISC.
- Có thể tham khảo tài liệu GPIO IP Core Specification [15], bao gồm đủ các thông tin cho việc sử dụng lõi IP này.
- Sử dụng lõi IP GPIO chắc chắn có thể đẩy nhanh phát triển dự án.
- GNU Toolchain đóng vai trò rất quan trọng trong phát triển các hệ điều hành Linux, BSD, và các phần mềm cho hệ thống nhúng.
- Bộ kiểm tra (test suite) trình dịch hợp ngữ (assembler) và trình liên kết (linker) đã có thể sử dụng đƣợc.
- Tăng tính tƣơng thích với phiên bản GCC 4.5.2 • Đã có thể sử dụng ngôn ngữ C.
- Sửa một số lỗi, có thể sử dụng C & C++ regression suite.
- Đã có thể thực hiện một số phƣơng pháp tối ƣu hóa.
- Điều này cho phép ngƣời phát triển OpenRISC có thể nhanh chóng biên dịch các chƣơng trình đơn giản và chạy trên board.
- Nhờ có thể sử dụng các thƣ viện C cơ bản và UART I/O, ngƣời phát triển có thể kiểm tra hệ thống của mình bằng những ứng dụng đơn giản nhƣ Hello World và những ứng dụng kiểm tra và chuẩn đoán khác viết bằng C, qua đó biết đƣợc rằng nó có hoạt động nhƣ yêu cầu đặt ra hay không.
- uClibc 41 Thƣ viện uClibc là thƣ viện C chuẩn dùng cho các hệ điều hành nhân linux, đƣợc sử dụng nhiều để lập trình các ứng dụng cho hệ thống nhúng, cung cấp một hệ điều hành Linux tƣơng thích cho các ứng dụng.
- Nó bao gồm một dãy các thiết bị ngoại vi, cho phép hệ thống hoàn chỉnh đƣợc mô hình hóa.
- Có thể đƣợc sử dụng nhƣ một công cụ mô phỏng độc lập, hoặc nhƣ một thƣ viện - Mô phỏng kiến trúc nhanh và mức cao.
- Hình 2.2 Hệ thống nền tảng máy tính Nhân Linux có cấu tạo kiểu nguyên khối (monolithic), nghĩa là toàn bộ hệ điều hành hoạt động trong không gian nhân (kernel space).
- Hỗ trợ nhiều hệ thống file nhƣ NTFS, FAT 16/32, ext2.
- eCos thích hợp cho các hệ thống nhúng,các ứng dụng chỉ cần một chu trình với nhiều luồng (thread) khác nhau.eCos đƣợc thiết kế dành cho các hệ thống có kích cỡ bộ nhớ nhỏ, cỡ hàng chục, hàng trăm KB, các hệ thống có yêu cầu trên thời gian thực.
- eCos có thể sử dụng trên nhiều nền tảng nhƣ ARM, PowerPC, NIOS, MIPS, SPARC.
- TRIỂN KHAI HỆ THỐNG VÀ ỨNG DỤNG 3.1 Xây dựng platform bằng ORPSoC Phần này nói về quá trình xây dựng hệ thống trên kit DE1 và sử dụng công cụ biên dịch chƣơng trình phần mềm để nạp chạy trên hệ thống.
- Các câu lệnh debug trực tiếp khi nạp chƣơng trình lên hệ thống cũng đƣợc triển khai một cách chi tiết.
- Phiên bản ORPSoC hiện tại mới hỗ trợ cho board DE1 của ALTERA nên có thể sử dụng trực tiếp xây dựng hệ thống OrpSoC trên DE1.
- 3.1.1 Xây dựng platform trên board DE1 Đầu tiên, chúng ta phải download mã nguồn ORPSoC V3 và tiến hành cài đặt công cụ tích hợp orpsoc hoặc fuesoc phục vụ cho quá trình xây dựng và nạp hệ thống lên DE1 board.
- Nhƣ đã trình bày trong chƣơng 3 về các công cụ phần mềm hỗ trợ cho dự án, OR1KSIM đƣợc xây dựng nhằm mô tả kiến trúc của hệ thống nền tảng OpenRISC, có thể cấu hình đƣợc tƣơng ứng với các board khác nhau, do đó các chƣơng trình phần mềm chạy trên OR1KSIM và ngay cả hệ điều hành khi boot thành công với OR1KSIM cũng sẽ hoạt động tƣơng ứng khi triển khai trên board FPGA với hệ thống nền tảng OpenRISC đã đƣợc xây dựng trƣớc đó.
- 52 Chúng ta sẽ tập trung viết một chƣơng trình C đầu tiên, biên dịch nó, chạy nó trong OR1K simulator cũng nhƣ trong hệ thống thực Đảm bảo OpenRISC GNU toolchain đƣợc cài đặt Toolchain hỗ trợ goi Newlib bao gồm thƣ viện GCC chuẩn là libgcc và libstdc++-v3.
- Libgloss port cung cấp sự hỗ trợ cho các board cơ bản, mà có thể cho phép dễ dàng để thêm các boards mới Bare metal Công cụ này cho phép ngƣời sử dụng phát triển hệ thống OpenRISC để nhanh chóng phiên dịch một chƣơng trình đơn giản và đƣa nó chạy trên board.
- bằng việc cung cấp sự truy cập đến thƣ viện C cơ bản và UART I/O, có thể giúp kiểm chứng hệ thống cơ bản thông qua ứng dụng hello-world và các chƣơng trình C tùy biến khác, ngƣời phát triển có thể nhanh chóng xác định nếu nó thực hiện nhƣ mong muốn.
- Thấy rằng, tất cả các board bao hàm trong OrpSOC sẽ có boards của chúng cũng đƣợc hỗ trợ trong libgloss, mà có thể cung cấp cách dễ dàng và nhanh chóng cho ngƣời sử dụng board đó để biên dịch và chạy code trên hệ thống

Xem thử không khả dụng, vui lòng xem tại trang nguồn
hoặc xem Tóm tắt