Mục lục
Mở đầu 1
Phần A : Lý thuyết chung 2
Chương 1 . Hệ điều hành nhúng uClinux 2
1.1. Nhân hệ điều hành Linux 2
1.1.1. Lịch sử nhân hệ điều hành Linux 2
1.1.2. Tổ chức của nhân hệ điều hành Linux 3
1.1.3. Tổ chức thư mục 5
1.2. Hệ điều hành nhúng uClinux 7
1.2.1. Quá trình phát triển hệ điều hành nhúng uClinux 7
1.2.2. Kiến trúc hệ điều hành uClinux 8
1.2.3. Các thư viện sử dụng để phát triển hệ điều hành uClinux 9
1.2.4. Driver của các ngoại vi 9
1.2.5. Mã nguồn hệ điều hành uClinux 10
Chương 2 . Vi điều khiển S3C44B0X và kit phát triển 12
2.1. Vi điều khiển S3C44B0X 12
2.1.1. Các đặc điểm của vi điều S3C44B0X 12
2.1.2. Sơ đồ chân 16
2.1.3. Sơ đồ khối 17
2.1.4. Chức năng một số khối chính 18
2.2. Kit phát triển HT44B0 33
Phần B : Thực nghiệm 36
Chương 3 . Biên dịch mã nguồn uClinux và xây dựng ứng dụng 36
3.1. Biên dịch mã nguồn hệ điều hành uClinux 36
3.1.1. Môi trường và các công cụ cần để biên dịch 36
3.1.2. Lưu đồ quá trình biên dịch và các bước tiến hành 36
3.2. Nhúng hệ điều hành vào vi điều khiển 42
3.2.1. Thiết lập giao tiếp giữa kit và máy tính 42
3.2.1. Đưa file ảnh hệ điều hành vào vi điều khiển 44
3.3. Xây dựng ứng dụng 49
Kết luận 53
Các tài liệu tham khảo 54
55 trang |
Chia sẻ: lethao | Lượt xem: 2016 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Ứng dụng hệ điều hành mã nguồn mở UClinux, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ợp với yêu cầu của các vi điều khiển không có đơn vị quản lý bộ nhớ .
Sự thuận lợi chính của nhân uClinux mang lại so với nhân Linux chạy trên PC là kích thước của nhân . Khi biên dịch nhân , nhà phát triển phải thiết lập các lựa chọn biên dịch như hỗ trợ loại vi xử lý , hệ thống file và hỗ trợ các thiết bị của nhân làm sao để kich thước của nhân giảm xuống còn khoảng 400 KB . Tuy nhiên vào lúc khởi động , thì nhân của hệ điều hành sẽ yều cầu khoảng không gian bộ nhớ khoảng một megabyte . Trong thực tế kích thước bộ nhớ cần khoảng 2MB vì còn cần cho các ứng dụng . Với hệ điều hành uClinux , kích thước ảnh nhân hệ điều hành được điều chỉnh khoảng từ 500 tới 900 KB .
Tương tự như mã nguồn hệ điều hành Linux , mã nguồn của hệ điều hành uClinux cũng có thể tải miễn phí . Mã nguồn hệ điều hành này cũng thuộc bản quyền GNU GPL , và giống như các tất cả các ứng dụng khác gói mã nguồn của nhân cũng bao gồm đầy đủ mã nguồn và các thư viện kèm theo . Mã nguồn hệ điều hành uClinux và các công cụ cần thiết có tìm tại website www.uclinux.org . Từ website này các nhà phát triển có thể tải gói phân phối củ hệ điều hành bao gồm mã nguồn nhân hệ điều hành uClinux , các thư viện , một số ứng dụng đã được phát triển , những thông báo lỗi và những lỗi đã được sửa .
Các thư viện sử dụng để phát triển hệ điều hành uClinux
uClinux sử dụng một phần của thư viện C chuẩn , đó là thư viện cơ sở để phục vụ cho việc phát triển nhân uClinux . Thư viện này dựa trên thư viện C Linux – 8086 nhưng đã đã được thu nhỏ thành một thư viện súc tích phù hợp với vi điều khiển . Thư viện uClibc đã được tạo ra hỗ trợ cho các vi điều khiển không có đơn vị quản lý bộ nhớ như Dragonball , ColdFire , ARM … thư viện vẫn hỗ trợ kiến trúc Linux chuẩn . uClinux cũng cung cấp hoàn toàn thư viện Linux chuẩn libC API .
Để phát triển uClinux , nhà phát triển có thể lựa chọn giữa hai thư viện libc là uC-libc và uClibc . Thư viện uClibc giống như thư viện glibc phát triển cho Linux , các hàm của glibc cũng được áp dụng cho uClibc . Ngoài ra gói mã nguồn của uClinux còn có một sô thư viện khác như : libatm hỗ trợ truyền dữ liệu không đồng bộ , libjpeg hỗ trợ cho định dạng ảnh nén JPEG , libm hộ trợ các thư viện toán học , libnet hỗ trợ các API để thao tác mạng .
Driver của các ngoại vi
Driver là các trình quản lý , điều khiển các ngoại vi , cung cấp các hàm cho phép người dùng để có thể điều khiển tới các thành phần ngoại vi . Các driver được chia làm ba lớp :
Character driver : Lớp này được sử dụng rộng rãi từ các ứng dụng đơn giản đến các ứng dụng phức . Ví dụ ứng dụng đơn giản như driver điều khiển LED , ứng dụng phức tạp như driver Firewire , driver USB . Character driver đọc và ghi dữ liệu trực tiếp tới thiết bị mà không có bộ nhớ đệm .
Block driver : Lớp này giao tiếp tới hệ thống file và được sử dụng để kết nối các phân vùng đĩa , các thiết bị vào file hệ thống . Khác với character driver , block driver thường đọc ghi dữ liệu với thiết bị thông qua bộ đệm .
Network driver : Loại này có nhiều cấu trúc khác nhau , hỗ trợ truyền thông , sử dụng các Port và các Socket để định tuyến các gói dữ liệu .
Thông thường chương trình ứng dụng không được truy cập , đọc hoặc ghi trực tiếp tới các thiết bị ngoại vi . Khi cần giao tiếp với các ngoại vi , chương trình ứng dụng sẽ sử dụng các driver để giao . Các driver có thể là một module hoặc là được liên kết tĩnh vào nhân . Driver được đăng ký với nhân hệ điều hành trong khi module khởi tạo tiến trình . Driver sẽ đăng ký các thành phần :
Bảng Fops .
Chỉ số Major .
Device Class ( Block hoặc Char ) .
Name – tên driver .
Mã nguồn hệ điều hành uClinux
Mã nguồn của uClinux có thể tải về từ địa chỉ www.uclinux.org , ở địa chỉ này cũng cấp các phiển bản khác nhau của hệ điều hành uClinux . Toàn bộ mã nguồn uClinux được chứa trong một file nén . Khi được giả nén , gói mã nguồn được tạo ra thành cấu trúc hình cây gồm các thư mục và tất cả các thư mục này đều được chứa trong thư mục chính là uClinux-dist . Đó là mã nguồn của hệ điều hành uClinux và cần biên dịch tạo ra một file ảnh để đưa vào hệ thống cần phát triển . File nén chứa mã nguồn uClinux được đặt tên theo một định dạng chuẩn như sau uClinux-dist-YYYYMMDD.tar.gz trong đó YYYY là năm , MM là tháng , DD là ngày .
Trong khóa luận này em sử dụng mã nguồn hệ điều hành uClinux với phiên bản nhân Linux là linux-2.4 . Sau khi giải nén file mã nguồn , các thư mục có trong thư mục chính uClinux-dist gồm các thư mục :
bin : các tiện ích để tạo ra file flash.bin .
Documention : tài liệu chi tiết của uClinux .
tools : các công cụ để biên dịch .
user : ứng dụng của người dùng và mã nguồn các ứng dụng đó .
freeswan : các chương trình bảo mật , mã hóa .
lib : Chứa các thư viện cho ứng dụng .
linux-2.4.x : mã nguồn nhân uClinux .
uClibc : thư viện C .
config : Cấu hình hệ thống file uClinux . vv…
romfs : Cấu trúc hệ thống file của ROM , bao gồm ứng dụng , các file thiết bị . Thư mục này được tạo ra khi biên dịch .
vendor : Chứa tên các thư mục của các loại vi xử lý mà hệ điều hành hỗ trợ .
images : Sau khi biên dịch , thư mục này chủa nhân dạng nhị phân của hệ điều hành , file ROM , và file ảnh .
Hình 2 : các thưc mục con và các file của thư mục uClinux-dist .
Trong thư mục ROM chứa các thư mục con , cấu trúc thư mục con này chính là cấu trúc thư mục của hệ điều hành uClinux khi chạy trên hệ thống nhúng . Và cấu trúc cũng giống như cấu trúc thư mục cơ bản của hệ điều hành Linux chuẩn . Các thư mục đó là : bin , dev , etc , home , lib , mnt , proc , tmp , usr , var ...
Hình 3 : các thư mục trong thư mục romfs .
Chương 2 . Vi điều khiển S3C44B0X và kit phát triển
Hệ thống nhúng được xây dựng trên cơ sở liên kết giữa phần mềm và phần cứng . Sự phát triển phần mềm phải dựa trên phần cứng , phần mềm sự điều khiển toàn bộ hoạt động của phần cứng nên việc tìm hiểu rõ phần cứng cũng rất quan trọng đặc biệt nắm rõ phần cứng sẽ giúp cho quá trình cấu hình hệ điều hành uClinux , viết driver cho ngoại vi và xây dựng các ứng dụng chính xác và nhanh hơn .
Vi điều khiển S3C44B0X
Giống như các dòng vi điều khiển khác như 8051 , AVR , PIC , PSoC , v.v , S3C44B0X được xây dựng từ một CPU và được bổ sung thêm các ngoại vi như bổ sung bộ nhớ , cấc cổng vào ra , các bộ định thời … Nên việc tìm hiểu vi điều khiển S3C44B0X cũng giống như tìm hiểu các dòng vi điều khiển khác . Việc tìm hiểu sẽ đi vào chi tiết các khối cấu thành nên vi điều khiển .
S3C44B0X là một vi điều khiển của hãng Samsung , đây là một vi điều khiển rất mạnh , có nhiều đặc tính ưu việt . Vi điều khiển này được dùng trong các hệ thống nhỏ nhưng đòi hỏi tính toán phức tạp và cần tốc độ cao , các ứng dụng thường sử dụng như các thiết bị cầm tay , thiết bị cần xử lý tín hiệu số và tất nhiên vi điều khiển này cũng được dùng trong các ứng dụng bình thường như các loại vi điều khiển khác .
S3C44B0X là vi điều khiển thuộc dòng vi điều khiển sử dụng nhân vi xử lý ARM . Cũng giống như một số hãng khác như Philipe , Atmel … , hãng Samsung sử dụng nhân vi xử lý ARM7TDMI được thiết kế bởi hãng Advanced RISC Machines – ARMÒ sau đó thiết kế một số ngoại vi để tạo nên một chip vi điều khiển . S3C44B0X được tích hợp một số khối chức năng đặc biệt giúp cho việc thiết kế hệ thống trở nên đơn giản hơn , giảm chi phí cho hệ thống .
Các đặc điểm của vi điều S3C44B0X
Kiến trúc :
Được tích hợp trong các thiết bị cầm tay , di động và các ứng dụng nói chung .
Sử dụng nhân vi xử lý ARM7TDMI được thiết kế theo kiến trúc RISC 16/32-bit .
Tích hợp chế độ gỡ rối trên chip thông qua chuẩn JTAG .
Tích hợp bộ nhân bằng phần cứng 32x8 bit .
Sử dụng kiến trúc bus SAMBA ( SAMSUNG’s ARM CPU Embedded Micro-controller Bus Architecture ) làm giảm công suất tiêu thụ của vi điều khiển .
Quản lý hệ thống :
Hộ trợ Little endian – Byte thấp được lưu ở địa chỉ thấp , byte cao được lưu ở địa chỉ cao và Big endian – Byte thấp được lưu ở địa chỉ cao , byte cao được lưu ở địa chỉ thấp .
Không gian địa chỉ là 32Mbytes trên mỗi băng . Tổng cộng là 256Mbytes .
Hỗ trợ khả năng lập trình 8/16/32- bit độ rộng bus dữ liệu cho mỗi băng .
Cố định đĩa chỉ bắt đầu và khả trình kích thước băng cho tất cả 7 băng .
Địa chỉ bắt đầu và kích thước của mỗi băng có thể lập trình được .
Có 8 băng nhớ :
6 băng nhớ cho ROM , SRAM , và các loại khác .
2 băng nhớ cho ROM /SRAM/DRAM( Fast page , EDO , Synchronous DRAM ).
Hỗ trợ đợi tín hiệu bên ngoài cho tới khi kết thúc chu kỳ bus .
Hỗ trợ chế độ làm tươi DRAM/SDRAM .
Hỗ trợ chế độ địa chỉ đối xứng / không đối xứng của DRAM .
Bộ nhớ cache và SRAM nội :
0/4/8 Kbyte SRAM nội được sử dụng khi mà bộ nhớ cache không được dùng .
Nội dụng chuyển giữa bộ nhớ chính và bộ nhớ cache được duy trì thông qua bộ bảo vệ .
Bộ quản lý Clock và nguồn :
Vi điều khiển tiêu thụ công suất thấp .
Có bộ PLL để tao tín hiệu xung nhịp điều khiển hệ thống lên tới tốc độ tối đa 66MHz .
Tín hiệu clock có thể được chọn cho mỗi khối chức năng và được thiết lập bằng phần mềm .
Các chế độ : Normal – chế độ hoạt động bình thường , slow – chế độ hoạt động tần số thấp không có PLL , idle- stop clock cho CPU , stop – stop toàn bộ tín hiệu clock .
Khi có tín hiệu ngắt từ ngắt ngoài EINT[7:0] hoặc ngắt cảnh báo của bộ thời gian thực thì vi điều khiển trở về trạng thái bình thường .
Ngắt của vi điều khiển :
Vi điều khiển có 30 nguồn ngắt ( watch-dog timer , 6 timer , 6 UART , 8 ngắt ngoài , 4 DMA , 2 RTC ,1 ADC , 1 IIC ,1SIO ) .
Hộ trợ ngắt ngoài theo mức và theo sườn tín hiệu .
Chế độ ngắt theo sườn và theo mức có thể chọn bằng lập trình .
Hộ trợ FIQ ( Fast Interrupt request ) khi có yêu cầu ngắt ngay tức khắc .
Timer có điều chế độ rộng xung :
5 kênh Timer điều chế độ rộng xung 16 bit . 1 kênh timer nội 16 bit có DMA hoặc ngắt .
Hỗ trợ nguồn clock bên ngoài .
Đồng hồ thời gian thực RTC ( Real Time Clock ) :
Đồng hồ thời gian thực hỗ trợ : mini giây , giây , phút , giờ , ngày , tuần , tháng , năm .
Hoạt động vời tần số 32.768 KHz .
Có ngắt cảnh báo để đánh thức CPU .
Ngắt timer tick .
Các IO Port :
8 port ngắt bên ngoài .
71 port I/O .
UART :
2 kênh UART có DMA và ngắt.
Hỗ trợ chuẩn dữ liệu truyền nhận 5 , 6 , 7 , 8 bit .
Có bắt tay bằng phần cứng .
Tốc độ baud có thể thiết lập bằng phần mềm .
Hỗ trợ giao tiếp hồng ngoại IrDA 1.0 ( 115.2 kbps) .
Mỗi kênh UART có 2 bộ nhớ đệm bên trong 32 byte FIFO cho Rx và Tx .
Bộ điều khiển DMA – Direct Memory Access :
2 kênh điều khiển DMA cho mục đích chung không chịu sự can thiệp bởi CPU.
2 kênh điều khiển DMA cho ngoại vi .
Hộ trợ DMA giữa các cổng vào ra tới bộ nhớ và từ bộ nhớ tới các cổng vào ra . DMA có thể được yều bởi phần mềm , 4 khối chức năng bên trong ( UART , SIO , Timer , IIS) và từ các chân bên ngoài .
Mức ưu tiên thứ tự giữa các DMA có thể thiết lập bằng phần mềm .
Tăng tốc độ truyền trên FPDRAM , EDODRAM và SDRAM .
Bộ biến đổi A/D :
8 kênh ADC .
Tốc độ lấy mẫu tối đa 100KSPS/10-bit .
Khối điều khiển LCD :
Hỗ trợ LCD đen trắng , màu và xám .
Hỗ trợ quét liên tục và quét xem kẽ .
Hộ trợ chức năng màn hình ảo .
Sử dụng bộ nhớ hệ thống làm bộ nhớ hiển thị .
Sử dụng DMA để truyền dữ .
Kích thước màn hình có thể chọn bằng chương trình .
Hỗ trợ màn hình Gray 16 mức .
Hỗ trợ 256 màu .
Watchdog timer :
Có Watchdog timer 16 bit .
Có yêu cầu ngắt hoặc khởi động lại hệ thống sau một khoảng thời gian .
Giao tiếp bus IIC :
1 kênh Multi- Master IIC-Bus có điều khiển ngắt .
Truyền nối tiếp , truyền dữ liệu 8 bit theo một chiều , hai chiều tốc độ lên tới 100 Kbit/s trong chế độ chuẩn ( standard mode ) và 400Kbit/s trong chế độ nhanh ( fast mode) .
Giao tiếp bus IIS :
Một kênh IIS-bus cho giao tiếp audio có điều khiển DMA .
Truyền nối tiếp , 8/16 bit cho mỗi kênh truyền dữ liệu .
Hộ trỡ định dạng dữ liệu MSB .
Truyền nối tiếp đồng bộ SIO ( Synchronous Serial I/O ) :
Một kênh SIO có điều khiển DMA và ngắt .
Tốc độ baud có thể lập trình được .
Hỗ trợ điều khiển truyền nhận dữ liệu 8 bit trong SIO .
Tần số hoạt động của hệ thống :
Tần số lên tới 66 MHz .
Dải điện áp cấp cho vi điều khiển :
Cung cấp cho nhân vi xử lý là 2.5V .
Cung cấp cho các cổng vào ra là 3V – 3.6V .
Sơ đồ chân
Hình 4 : Sơ đồ chân của vi điều khiển S3C44B0X
Sơ đồ khối
Hình 5: Sơ đồ khối vi điều khiển S3C44B0X
Chức năng một số khối chính
Lõi vi xử lý ARM7TDMI
Đóng vai trò là bộ não của S3C44B0X , lõi vi xử lý ARM7TDMI phải đảm bảo cho chương trình hoạt động , phải có khả năng truy cập vào bộ nhớ , thực hiện các phép tính , điều khiển ngoại vi và quản lý ngắt .
Lõi vi xử lý ARM7TDMI là một thành viên trong họ vi xử lý ARM . ARM7TDMI là dòng vi xử lý 32 bit , rất mạnh , tiêu tốn công suất thấp , hỗ trợ tập lập 32 bit và 16 bit . Kiến trúc của ARM7TDMI được dựa trên kiến trúc RISC , với kiến trúc này việc giải mã mã máy đơn giản hơn rất nhiều so với kiến trúc CISC do đó làm tăng tốc độ thực thi lệnh , đáp ứng được tính thời gian thực của các ngắt . ARM7TDMI được áp dụng kỹ thuật xử lý đường ống trong việc xử lý lệnh và được chia làm ba giai đoạn : nạp lệnh – fetch , giải mã lệnh – decode và thực thi lệnh – execution . Trong ký thuật xử lý đường ống , khi một lệnh đang được thực thi thì lệnh thứ hai đang được giải mã lệnh và lệnh thứ ba bắt đầu được nạp từ bộ nhớ . Với kỹ thuật này thì tốc độ xử lý tăng lên rất nhiều , trong một chu kỳ máy CPU làm được nhiều việc . Hỗ trợ tới 4Gbytes không gian địa chỉ tuyến tính , sử dụng kiến trúc Von Neumann để nạp và lưu trữ lệnh và dữ liệu , dùng chung một bus 32 bit cho cả dữ liệu và lệnh . ARM7TDMI hỗ trợ nhiều loại dữ liệu , do là dòng vi xử lý 32 bit nên một từ ( word ) sẽ tương đương với 32 bit , các loại dữ liệu như word – 32 bit , halfword – 16 bit , byte – 8 bit . Có bộ nhân phần cứng 32x8 bit trong một chu kỳ . Hỗ trợ gỡ rối chương trình trên chip thông qua chuẩn JTAG .
Hình 6 : Sơ đồ khối của lõi vi xử lý ARM7TDMI.
Hình 7 : Các khối logic của ARM7TDMI.
Hình 8: Sơ đồ các tín hiệu vào ra của ARM7TDMI .
Các chế độ hoạt động :
User : Thực hiện các chương trình bình thường .
FIQ : Hỗ trợ việc truyền dữ liệu và các kênh xử lý .
IRQ : Được sử dụng cho việc xử lý các ngắt mục đích chung .
Supervisor (svc) : Đây là chế độ bảo vệ dùng cho hệ điều hành .
Abort mode (abt) : Được nhập vào sau khi dữ liệu hoặc lệnh được bỏ qua tiền nạp .
System ( sys ) : Chế độ đặc quyền người dùng dùng cho hệ điều hành .
Undefined ( und ) : Được nhập vào khi một lệnh không xác định được thực thi.
Các chế độ này có thể được thiết lập bằng phần mềm hoặc thông qua các ngắt bên ngoài hoặc thông qua quá trình xử lý ngoại lệ . Phần lớn các chương trình ứng dụng được thực thi trong chế độ User .Mỗi chế độ điều khiển đều có các băng thanh ghi hỗ trợ để tăng tốc độ bắt các ngoại lệ . Chế độ FIQ có năm băng thanh ghi hỗ trợ từ r8_fiq đến r12_fiq làm tăng tốc độ xử lý các ngắt .
Các thanh ghi :
ARM7TDMI có tất cả 37 thanh ghi , trong đó có 31 thanh ghi dùng cho mục đích chung 32 bit , và 6 thanh ghi trạng thái .
Các thanh ghi được sử dụng trong trạng thái ARM ( The ARM-state register set ):
Trong trạng thái ARM , 16 thanh ghi chung và một hoặc hai thanh ghi trạng thái có thể được sử dụng ở mọi thời điểm . Trong chế độ đặc quyền , băng thanh ghi ứng với chế độ cụ thể sẽ được thiết lập .
Bảng các thanh dùng chung được sử dụng tương ứng với mỗi chế độ hoạt động :
Bảng các thanh ghi trạng thái chương trình
Các băng thanh ghi
Các thanh ghi dùng trong trạng thái lệnh rút gọn ( The Thumb-state register set) :
Bảng các thanh ghi dùng được sử dụng tương ứng với mỗi chế độ hoạt động :
Bảng các thanh ghi trạng thái chương trình
Các băng thanh ghi
Mối liên hệ các thanh ghi giữa ARM –state và Thumb-state :
Các thanh ghi từ r0 đến r7 của Thumb-state giống như các thanh ghi r0 đến r7 của ARM-state .
Thanh ghi CPSR và các thanh ghi SPSR của Thumb-state giống với các thanh ghi SPSR và các thanh ghi SPSR của ARM-state .
Thanh ghi SP của Thumb-state được ánh xạ tới thanh ghi r13 của ARM-state .
Thanh ghi LR của Thumb-state được ánh xạ tới thanh ghi r14 của ARM-state .
Thanh ghi PC của Thumb-state được ánh xạ tới thanh ghi PC(r15) của ARM-state.
Hình 9 : Sơ đồ ánh xạ các thanh ghi của Thumb-sate và ARM-state .
Các thanh ghi trạng thái chương trình
Lõi vi xử lý ARM7TDMI bao gồm một thanh ghi CPSR và năm thanh ghi SPSR lưu giữ trạng thái các ngoại lệ . Mục đích của các thanh ghi trạng thái là :
Nắm giữ thông tin mới được thực hiện bởi bộ tính toán ALU .
Điều khiển cho phép hoặc vô hiệu hóa các ngắt .
Thiết lập trạng thái hoạt động của vi xử lý .
Hình 10 : định dạng các bit của thanh ghi trạng thái .
Các cờ điều kiện ( Condition code flags ) :
Các bit N , Z , C và V là mã các cờ điều kiện , các bit này có thể thiết lập bằng các số hoặc bằng các toán từ logic . Chúng cũng có thể được thiết lập bằng các lệnh MSR hoặc LDM . Vi xử lý ARM7TDMI kiểm tra các cờ này để quyết định xem lệnh có thực thi hay không .
Các bit điều khiển :
Tám bit thấp của một thanh ghi trạng thái chương trình là các bit điều khiển . Chúng có thể là : các bit vô hiệu hóa ngắt , bit T, các bit thiết lập chế độ . Các bit điều khiển này thay đổi khi xuất hiện một ngoại lệ . Khi vi xử lý hoạt động ở chế độ đặc quyền thì phần mềm có thể thao tác với các bit này .
Các bit vô hiệu hóa ngăt : Hai bit I và F là các bit vô hiệu hóa ngắt . Khi bit I được đặt là 1 thì các ngắt IRQ bị vô hiệu hóa . Khi bit F được đặt là 1 thì các ngắt FIQ bị vô hiệu hóa .
Bit T : Bit này phản ánh trạng thái hoạt động : khi bit T được đặt là 1 thì bộ vi xử lý thực thi trong Thumb-state . Khi bit t đặt là 0 thì bộ vi xử lý thực thi trong ARM-state .
Các bit thiết lập chế độ : các bit M[4:0] qui định trạng chế độ hoạt động của vi xử lý .
Bảng giá trị các bit thiết lập chế độ của thanh ghi trạng thái chương trình
Các bit dữ trữ : Các bit này chưa được sử dụng , khi mà các bit cờ hoặc các bit điều khiển thay đổi giá trị thì các bit dữ trữ này không thay đổi .
Các cổng vào ra
S3C44B0X có tất cả 71 chân vào ra đa chức năng , và các chân này được chia thành các cổng :
Hai cổng vào ra 9 bit ( Port E và port F) .
Hai cổng vào ra 8 bit ( Port D và port G) .
Một cổng vào ra 16 bit ( Port C ) .
Một cổng ra 10 bit ( Port A) .
Một cổng ra 11 bit ( Port B) .
Mỗi cổng có thể cấu hình dễ dàng bằng phần mềm để phù hợp với các hệ thống và phù hợp với yêu cầu thiết kế .Các chức năng của mỗi chân được sử dụng phải được định nghĩa trước khi chương trình chính bắt đầu . Nếu mà trên một chân nhiều chức năng không được sử dụng , thì chân đó có thể được cấu hình giống như các cổng vào ra bình thường . Bình thường các chân này đã được cấu hình mặc định để tránh xẩy ra các vấn đề xung đột .
Các cổng của S3C44B0X có các thanh ghi bao gồm thanh ghi cấu hình , thanh ghi dữ liệu , thanh ghi thiết lập trở treo , thanh ghi điều khiển ngắt bên ngoài.
Thanh ghi cấu hình ( Port Configuration Register – PCONA-G ) : Phần lớn các chân trên một cổng đều có nhiều chức năng , do đó chức năng cho mỗi chân phải được lựa chọn khi sử dụng . Thanh ghi PCONn sẽ quyết định chức năng được sử dụng cho từng chân .
Thanh ghi dữ liệu ( Port Data Register - PDATA-C) : Nếu các cổng được cấu hình là các cổng ra , dữ liệu có thể có thể được ghi vào thanh ghi PDATn tương ứng từng bit . Nếu mà các cổng được cấu hình là các cổng vào thì dữ liệu có thể được đọc từ thanh ghi PDATn .
Thanh ghi thiết lập trở kéo ( Port Pull-up Register PUPC-G ) : Thanh ghi này thiết lập việc cho phép hoặc vô hiệu hóa các cổng có trở kéo hay không . Ứng với từng bit của thanh ghi này nếu mà được đặt là 0 , thì ứng với bit đó trên cổng có trở kéo và nếu được đặt là 1 thì ứng với bit đó trên cổng không có trở kéo .
Bảng các địa chỉ các thanh ghi của các cổng :
Thanh ghi
Địa chỉ
Chức năng
R/W
Giá trị mặc đinh
PCONA
0x01D20000
Cấu hình chân cổng A
R/W
0x3ff
PDATA
0x01D20004
Thanh ghi dữ liệu cổng A
R/W
Không định trước
PCONB
0x01D20008
Cấu hình chân cổng B
R/W
0x7ff
PDATB
0x01D2000C
Thanh ghi dữ liệu cổng B
R/W
Không định trước
PCONC
0x01D20010
Cấu hình chân cổng C
R/W
0xAAAAAAAA
PDATC
0x01D20014
Thanh ghi dữ liệu cổng C
R/W
Không định trước
PUPC
0x01D20018
Cấu hình trở kéo cổng C
R/W
0x0
PCOND
0x01D2001C
Cấu hình chân cổng D
R/W
0x0000
PDATD
0x01D20020
Thanh ghi dữ liệu cổng D
R/W
Không định trước
PUPD
0x01D20024
Cấu hình trở kéo cổng D
R/W
0x0
PCONE
0x01D20028
Cấu hình chân cổng E
R/W
0x0000
PDATE
0x01D2002C
Thanh ghi dữ liệu cổng E
R/W
Không định trước
PUPE
0x01D20030
Cấu hình trở kéo cổng E
R/W
0x0
PCONF
0x01D20034
Cấu hình chân cổng F
R/W
0x0000
PDATF
0x01D20038
Thanh ghi dữ liệu cổng F
R/W
Không định trước
PUPF
0x01D2003C
Cấu hình trở kéo cổng F
R/W
0x0
PCONG
0x01D20040
Cấu hình chân cổng G
R/W
0x0000
PDATG
0x01D20044
Thanh ghi dữ liệu cổng G
R/W
Không định trước
PUPG
0x01D20048
Cấu hình trở kéo cổng G
R/W
0x0
Thanh ghi điều khiển ngắt ngoài ( External Interrupt Control Register ) : Thanh ghi EXTINT cấu hình tín hiệu ngắt như ngắt xảy ra ở mức thấp , ngắt xảy ra ở mức cao , ngắt xảy ra khi có xuất hiện sườn lên của xung , ngắt xảy ra khi xuất hiện sườn xuống của xung và xẩy ra khi xuất hiện của hai dạng sườn xung .
Thanh ghi EXTINT cấu hình trạng thái tín hiệu ngắt cho tám nguồn ngắt bên ngoài .
Hình 11 : Địa chỉ thanh ghi EXTINT và các giá trị mặc định .
Hình 12 : Các giá trị các bit của thanh ghi EXTINT ứng với các ngắt ngoài
Xung nhịp hệ thống
Bộ tạo xung nhịp bên trong S3C44B0X có thể tạo tín hiệu xung nhịp cung cấp cho CPU và các ngoại vi . Bộ tạo xung nhịp có thể được điều khiển để cung cấp hoặc ngắt tín hiệu xung nhịp tới mỗi khối ngoại vi bằng khóa S/W . Nguồn xung nhịp chính có thể lấy từ thạch anh bên ngoài hoặc từ tín hiệu xung nhịp bên ngoài . Bộ tạo xung nhịp có một bộ dao động được nối tới thạch anh bên ngoài , và có một bộ PLL ( Phase – Locke - Loop ) để tạo ra xung nhịp có tần số cao từ tần số thấp của bộ dao động theo yêu cầu của S3C44B0X .
Hình 13 : Sơ đồ khối bộ tạo xung nhịp
Hình 14 : Sơ đồ khối bộ PLL ( Phase Locked Loop).
Hình 15 : Mạch tạo dao động bằng thạch anh và bằng nguồn dao động bên ngoài
Bộ điều khiển truy cập bộ nhớ trực tiếp – DMA .
Vi điều khiển S3C44B0X có bốn kênh điều khiển DMA . Hai kênh DMA được gọi là ZDMA được gắn vào SSB ( Samsung System Bus ) vào hai kênh DMA được gọi là BDMA là cầu nối giữa hài SSB và SPB ( Samsung Peripheral Bus ) . Hai điều kênh điều khiển ZDMA truyền dữ liệu giữa bộ nhớ và bộ nhớ . Hai kênh điều khiển BDMA truyền dữ liệu qua lại giữ ngoại vi vào ra và bộ nhớ . Các bus SPB như SIO , IIS ,UART . Như có DMA nên việc truyền dữ liệu không cần sự can thiệp của CPU .
Hình 16 : Sơ đồ khối bộ điều khiển ZDMA.
Hình 17: Sơ đồ khối bộ điều khiển BDMA.
Các bộ định thời
S3C44B0X có sáu bộ định thời 16 bit , mỗi bộ định thời có thể hoạt động dựa trên chế độ ngắt hoặc DMA . Các bộ định thời 0 , 1, 2, 3 và 4 có chức năng tạo độ rộng xung . Bộ định thời 5 là một bộ định thời bên trong và không có chận ra . Nguồn xung nhịp chính của hệ thống được đưa qua bộ prescaler 8 bit và qua các bộ chia tần sau đó mới được đưa đến các bộ định thời . Thông qua bộ chia tần nguồn xung nhịp cấp cho các bộ định thời có thể điều chỉnh tần số rễ dàng . Ngoài chức năng điều chế độ rộng xung ra , các bộ định thời của S3C44B0X còn có hai bộ đệm , khi thay đổi giá trị của bộ định thời thì giá trị đó được tự động nạp vào vào quá trình hoạt động lần tiếp theo nó không làm ảnh hưởng hay làm dừng hoạt động hiện tại . Các bộ định thời có khả năng tự động nạp lại giá trị đếm .
Hình 18 :Sơ đồ khối các bộ định thời .
Kit phát triển HT44B0
Hình 19: kit phát triển HT44B0
Hình 20: Sơ đồ khối Kit phát triển
Sơ đồ nguyên lý của kit HT44B0 có trong tài liệu kèm theo .
Một số đặc điểm của HT44B0 :
Dùng vi điều khiển S3C44B0X ( Samsung) có nhân vi xử lý ARM7TDMI .
Có 2MB bộ nhớ Flash .
Cổng Ethernet 10M , dùng chíp RTL8019AS .
Có màn hình LCD graphics , kích thức 320x240 đen trắng .
Có cổng USB 1.1 , dùng chíp PDIUSBD12 .
Có 2 cổng RS232 .
Có cổng IDE .
Có loa .
Có JTAG để gỡ rối chương trình trên chíp .
Hỗ trợ hệ điều hành nhúng UCOSII và uClinux .
Kit HT44B0 đã được nạp sẵn BIOS ngoài ra nhà sản xuất cũng cung cấp mã nguồn BIOS cho phép người phát triển có thể sửa đổi . BIOS cung cấp cho các lệnh cho phép thực hiện các tùy biến :
help ------ Hiển thị trợ giúp .
? ------ Tương đương với lệnh help
date ------ Hiển thị và thiết lập ngày tháng năm cho hệ thống
time ------ Hiển thị và thiết đặt giờ phút giây cho hệ thống .
setweek ------ Thiết đặt tuần của hệ thống .
clock ------ Hiển thị tần số hoạt động của hệ thống .
setmclk ------ Thiết lập tần số của hệ thống .
setbaud ------ Thiết lập tốc độ baud .
load ------ Nạp file ra bộ nhớ .
comload ------ nạp file từ cổng nối tiếp .
prog ------ Ghi chương trình vào bộ nhớ Flash.
boot ------ Thực hiện khởi động từ Flash .
ap ------ Tự động nạp file ảnh chương trình và ghi vào bộ nhớ flash . copy ------ Sao chép bộ nhớ Flash từ địa nguồn vào địa chỉ đích .
ipcfg ------ Hiển thị và đặt địa chỉ IP .
run ------ Chạy chương trình từ một địa chỉ trong RAM .
move ----
Các file đính kèm theo tài liệu này:
- Ứng dụng hệ điều hành mã nguồn mở uClinux .doc