Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 100 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
100
Dung lượng
1,27 MB
Nội dung
CHƯƠNG GIỚI THIỆU ĐỂ TÀI LỜI CẢM ƠN Thời gian năm đại học trôi thật nhanh, chúng em kết thúc khoảng thời gian sinh viên đại học để bước vào giới mới, thử thách Lúc chúng em cảm thấy thật nôn nao phải nói lời chào tạm biệt Trước tiên, chúng em xin chân thành cảm ơn thầy, cô khoa công nghệ thông tin thầy, cô trường đại học Tôn Đức Thắng dẫn dắt chúng em bước suốt năm qua Chúng em xin cảm ơn Thầy Lê Mậu Long tạo điều kiện cho chúng em thời gian thực tập nghiên cứu Phân viện Công nghệ Thông tin Đặc biệt, chúng em xin nói lời cảm ơn sâu sắc tới Thầy Nguyễn Ngọc Tú nhiệt tình hướng dẫn chúng em trình thực tập, nghiên cứu giúp chúng em hồn thành đề tài nghiên cứu Chúng tơi chân thành cảm ơn người bạn thân giúp đỡ suốt thời gian qua Cuối cùng, chúng xin dành lời cảm ơn sâu sắc tới gia đình người thân ni nấng, ủng hộ hỗ trợ cho chúng ngày để chúng hồn thành nhiệm vụ -1- CHƯƠNG GIỚI THIỆU ĐỂ TÀI NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Ngày …….tháng ……năm 2007 Ký tên -2- CHƯƠNG GIỚI THIỆU ĐỂ TÀI NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Ngày …….tháng ……năm 2007 Ký tên -3- CHƯƠNG GIỚI THIỆU ĐỂ TÀI Mục lục LỜI CẢM ƠN - Chương GIỚI THIỆU ĐỀ TÀI - 10 Mục tiêu đề tài - 10 - Phương hướng giải - 11 - Bố cục luận văn - 11 - Chương TỔNG QUAN HỆ THỐNG NHÚNG - 12 Hệ thống nhúng - 12 - 1.1 Khái niệm hệ thống nhúng - 12 - 1.2 Lịch sử phát triển - 13 - Đặc điểm hệ thống nhúng - 13 - 2.1 Cầu hình hệ thống hệ thống nhúng - 14 - 2.2 Các công cụ - 14 - Lý thuyết hệ thống nhúng - 15 - 3.1 Phần cứng - 15 - 3.1.1 Bộ xử lý - 16 - 3.1.2 Thiết bị ngoại vi - 17 - 3.1.3 Ánh xạ nhớ - 17 - 3.1.4 Ánh xạ nhập xuất - 18 - 3.1.5 Giao tiếp phần cứng - 18 - 3.1.6 Ánh xạ tín hiệu ngắt - 19 - 3.2 Bộ nhớ - 20 - 3.2.1 3.3 Các kiểu nhớ - 20 Thiết bị ngoại vi - 24 - 3.3.1 Thanh ghi điều khiển ghi trạng thái - 24 - 3.3.2 Trình điều khiển thiết bị - 24 - 3.4 Hệ điều hành - 25 - 3.4.1 Đặc điểm điều hành - 25 - 3.4.2 Yêu cầu hệ điều hành nhúng - 25 - Chương HỆ THỐNG NHÚNG TRÊN LINUX - 28 1.1 Hệ Điều hành nhúng Linux gì? - 28 Hệ điều hành Embedded Linux - 28 - -4- CHƯƠNG GIỚI THIỆU ĐỂ TÀI 1.2 Hệ điều hành FreeRTOS - 29 - 1.3 Hệ điều hành Nucleus RTOS - 29 - 1.4 Hệ điều hành RTEMS - 30 - Sự hỗ trợ phần cứng - 31 - 2.1 Cấu trúc xử lý - 31 - 2.1.1 x86 - 31 - 2.1.2 ARM - 31 - 2.1.3 IBM/Motorola PowerPC - 32 - 2.1.4 MIPS - 32 - 2.1.5 Hitachi SuperH - 33 - 2.1.6 Motorola 68000 - 33 - 2.2 Các bus interface - 34 - 2.2.1 ISA - 34 - 2.2.2 PCI - 35 - 2.2.3 PCMCIA - 35 - 2.2.4 PC/104 - 36 - 2.2.5 VME - 36 - 2.2.6 CompactPCI - 37 - 2.2.7 Parallel Port - 37 - 2.2.8 SCSI - 37 - 2.2.9 USB - 38 - 2.2.10 IEEE1394 - 38 - 2.2.11 GPIB - 38 - 2.2.12 I2C - 39 - 2.3 I/O - 39 - 2.3.1 Cổng - 39 - 2.3.2 Cổng song song - 40 - 2.3.3 Modem - 40 - 2.3.4 DAQ - 40 - 2.3.5 Điều khiển tiến trình - 41 - 2.3.6 Bàn phím - 41 - 2.3.7 Chuột - 41 - 2.3.8 Hiển thị - 41 - 2.3.9 Âm - 42 -5- CHƯƠNG 2.3.10 2.4 GIỚI THIỆU ĐỂ TÀI Máy in - 42 Mạng đa - 42 - 2.4.1 Ethernet - 42 - 2.4.2 IEEE 802.11 - 43 - 2.4.3 Bluetooth - 43 - 2.5 Mạng công nghiệp - 44 - 2.5.1 CAN - 44 - 2.5.2 ARCnet - 44 - 2.5.3 Modbus - 44 - Chương TỔNG QUAN LẬP TRÌNH NHÚNG TRÊN LINUX - 46 Lập trình Linux - 46 - 1.1 Xử lý tập tin - 46 - 1.1.1 Các cách xử lý tập tin linux - 46 - 1.1.2 Thư viện xuất nhập chuẩn - 46 - 1.1.3 Hàm truy nhập cấp thấp - 47 - 1.2 Tiến trình - 49 - 1.2.1 Khái niệm tiến trình - 49 - 1.2.2 Các trạng thái tiến trình - 49 - 1.2.3 Tạo lập tiến trình - 49 - 1.3 Tín hiệu - 49 - 1.3.1 Khái niệm tín hiệu - 49 - 1.3.2 Các hàm xử lý tín hiệu - 50 - 1.4 Tiểu trình - 51 - 1.4.1 1.5 Khái niệm thread - 51 Semaphores, Hàng đợi thông điệp, Bộ nhớ dùng chung - 52 - 1.5.1 Giới thiệu System V IPC - 52 - 1.5.2 Semaphores - 52 - 1.5.3 Bộ nhớ dùng chung - 54 - 1.5.4 Hàng đợi thông điệp - 55 - Lập trình nhúng Linux - 56 - 2.1 Khái niệm - 56 - 2.1.1 Các kiểu host: - 56 - 2.1.2 Các kiểu host/target phát triển - 57 - 2.1.3 Các kiểu host/target gỡ lỗi - 59 -6- CHƯƠNG 2.1.4 2.2 GIỚI THIỆU ĐỂ TÀI Các kiểu cấu hình khởi động - 60 Tìm hiểu kernel - 63 - 2.2.1 Chọn kernel - 63 - 2.2.2 Cấu hình kernel - 63 - 2.3 Nội dung hệ thống tập tin gốc - 70 - 2.4 Cài đặt hệ thống tập tin gốc - 73 - Chương GIỚI THIỆU VỀ THIẾT BỊ LDS2000 - 75 Chương CÀI ĐẶT CHƯƠNG TRÌNH - 77 Các bước cài đặt máy host - 77 - Cấu hình, tạo ảnh kernel ramdisk - 78 - 2.1 Cấu hình kernel boot ram - 78 - 2.2 Cấu hình kernel boot NFS - 80 - Thiết lập Minicom - 81 - Cài đặt TFTP server host - 83 - Cài đặt NFS server host - 84 - Chương ỨNG DỤNG - 85 Giới thiệu ứng dụng minh họa - 85 - Cách thực - 86 - 2.1 2.1.1 Giới thiệu địa chức ghi - 86 - 2.1.2 Sử dụng ghi - 86 - 2.2 Xử lý thiết bị thông qua ghi - 86 - Phân tích ứng dụng - 87 Các bước đóng gói chương trình ứng dụng - 91 - Chương HẠN CHẾ VÀ HƯỚNG PHÁT TRIỂN - 93 Hạn chế kết đạt - 93 - Hướng phát triển - 93 - PHỤ LỤC A: - 94 PHỤ LỤC B - 96 THUẬT NGỮ - 98 TÀI LIỆU THAM KHẢO - 99 - -7- CHƯƠNG GIỚI THIỆU ĐỂ TÀI DANH MỤC HÌNH Hình 1.1: Các thiết bị nhúng - 12 Hình 1.2: Máy tính Dẫn đường Apollo - 13 Hình 1.3: Mơ hình hệ thống nhúng - 14 Hình 1.4: Tập tin tiêu đề ánh xạ nhớ - 18 Hình 1.5: Tập tin tiêu đề ánh xạ nhập xuất - 18 Hình 1.6: Kiểm sốt vịng lặp (polling) - 19 Hình 1.7: Bảng ánh xạ tín hiệu ngắt - 20 Hình 1.8: Tập tin tiêu đề ánh xạ tín hiệu ngắt bo mạch Arcom - 20 Hình 1.9: Hệ thống phân loại thiết bị nhớ - 21 Hình 1.10: Trạng thái tác vụ - 26 Hình 1.11: danh sách tác vụ sẵn sàng - 27 Hình 2.1: Bộ vi xử lý i386 ZFx86™ 486 - 31 Hình 2.2: Bộ vi xử lý ARM - 32 Hình 2.3: Bộ Tivo (mặt trước sau) - 32 Hình 2.4: Bộ vi xử lý MIPS R4400 - 33 Hình 2.5: Bộ vi xử lý SH-2 - 33 Hình 2.6: Bộ vi xử lý M68k - 34 Hình 2.7: Mơ hình bus ISA - 35 Hình 2.8: Mơ hình bus PCI - 35 Hình 2.9: Mơ hình bus PCMCIA - 36 Hình 2.10: PCI-104 - 36 Hình 2.11: Interface SCSI - 37 Hình 2.12: Kết nối usb - 38 Hình 2.13: Firewire - 38 Hình 2.14: GPIB - 39 Hình 2.15: Cổng - 40 Hình 2.16: Cổng song song - 40 Hình 3.1: Mơ hình xử lý hệ thống - 46 Hình 3.2: Hệ thống đối tượng IPC - 52 Hình 3.3 : semaphore - 53 - -8- CHƯƠNG GIỚI THIỆU ĐỂ TÀI Hình 3.4: Chia sẻ nhớ dùng chung - 54 Hình 3.5 Hàng đợi thông điệp - 55 Hình 3.6: Cài đặt kết nối host/target - 57 Hình 3.7: Cài đặt lưu trữ trung gian - 58 Hình 3.8: cài đặt độc lập - 59 Hình 3.10: Thành phần thiết bị lưu trữ trạng thái khởi động - 61 Hình 5.1: Menu cấu hình kernel - 79 Hình 5.2: Menu cấu hình kernel - 80 Hình 5.3: Menu cài đặt minicom - 81 Hình 5.4: Giao diện minicom - 82 Hình 5.4: Giao diện boot thiết bị lDS2000 - 82 Hình ứng dụng 1: Keypad - 87 Hình ứng dụng : Segment - 87 Hình ứng dụng : Keypad_segment - 88 - -9- CHƯƠNG GIỚI THIỆU ĐỂ TÀI Chương GIỚI THIỆU ĐỀ TÀI Sau phát triển máy tính lớn mini (mainframe mini computer) giai đoạn 1960-1980, PC-Internet giai đọan 1980-2000, thời đại hậu PC Giai đoạn hậu PC-Internet dự đoán từ năm 2000 đến 2020 giai đoạn môi trường thông minh mà hệ thống nhúng cốt lõi làm nên sóng đổi thứ phát triển Công nghệ thông tin Sức đẩy công nghệ đưa công nghệ vi điện tử, công nghệ vi điện, công nghệ sinh học hội tụ tạo nên chip công nghệ nano, tảng cho thay đổi công nghệ thông tin truyền thơng Sức kéo thị trường địi hỏi thiết bị phải có nhiều chức thân thiện với người dùng, có mức độ thơng minh ngày cải thiện đưa đến vai trò tầm quan trọng hệ thống nhúng ngày cao kinh tế quốc dân Phát triển hệ thống nhúng phần mềm nhúng quốc sách nhiều quốc gia giới, vào giai đoạn hậu PC Chính phủ, ngành cơng nghiệp, viện nghiên cứu, trường đại học Việt Nam thay đổi chiến lược phát triển công nghệ thông tin truyền thơng để theo kịp, rút ngắn khoảng cách tụt hậu lĩnh vực công nghệ thông tin truyền thông nước khu vực giới trình hội nhập kinh tế toàn cầu Với phát triển hệ thống nhúng thấy, chúng em định chọn đề tài luận văn “Tìm hiểu lập trình nhúng linux: Viết ứng dụng minh hoạ LDS2000” Mục tiêu đề tài - Do thời gian thực đề tài có hạn chúng em tập trung chủ yếu vào: - 10 - CHƯƠNG ỨNG DỤNG Chương ỨNG DỤNG Giới thiệu ứng dụng minh họa - Yêu cầu chương trình thực thi: o Chương trình nhận tín hiệu bàn phím hiển thị tín hiệu nhận 7Segment đèn LED o Chương trình cho phép người dùng nhập liên tục số từ – 7, năm giá trị cuối hiển thị sau giây đèn LED Quá trình lặp lại theo chu kì từ trái sang phải Nội dung xử lý tín hiệu: Nhập số 0, 1, 2, 3, 4, 5, 6, 7, hiển thị giá trị 7-Segment Ví dụ: Nhập [ ] hiển thị Nhập phím * xóa giá trị hiển thị 7-Segment Nhập phím ứng dụng Các giá trị tương ứng hiển thị đèn LED, theo tung gia tri - 85 - CHƯƠNG ỨNG DỤNG Cách thực 2.1 Xử lý thiết bị thông qua ghi 2.1.1 Giới thiệu địa chức ghi Trong trình ứng dụng điều khiển thiết bị thông qua nhớ MSC tương ứng với ghi CS (Chip Select) Nó phát sinh tín hiệu CS theo thơng tin lựa chọn Bộ nhớ Địa ánh xạ Thành phần ghi MSC0 0x4800 0008 CS0 16 bit CS1: 16 bit MSC1 0x4800 000C CS2: 16 bit CS3: 16 bit MSC2 0x4800 0010 CS: 16 bit CS5: 16 bit Bảng địa thành phần ghi Mỗi ghi CS có chức định Địa ánh xạ Thiết bị sử dụng 0x0000 0000 – 0x03FF FFFF CS0 -> Flash Memory 0x0400 0000 – 0x07FF FFFF CS1 -> Ethernet Controler 0x0800 0000 – 0x0BFF FFFF CS2 -> Ext-IO (LED, KEYPAD) 0x0C00 0000 – 0x0FFF FFFF CS3 -> GPIO 0x0100 0000 – 0x13FF FFFF CS4 -> không sử dụng 0x1400 0000 – 0x17FF FFFF CS5 -> 7-Segment Bảng ánh xạ nhớ 2.1.2 Sử dụng ghi Gồm bước: - Mở thiết bị nhớ để sử dụng - 86 - CHƯƠNG ỨNG DỤNG - Ánh xạ vùng nhớ - Gán giá trị chọn cho ghi (giá trị nhà sản xuất qui định) 2.2 Phân tích ứng dụng - Xử lý Keypad: Hình ứng dụng 1: Keypad - Xử lý Segment: Hình ứng dụng : Segment - Xử lý bàn phím segment: - 87 - CHƯƠNG ỨNG DỤNG Hình ứng dụng 3: Keypad_segment Cách xử lý cụ thể: - Sử dụng init_CS () để đăng kí sử dụng vùng nhớ Trong hàm init_CS (): o Ánh xạ 1024 bytes bắt đầu địa 0x48000000 tập tin /dev/mem , vùng nhớ có quyến đọc ghi (PROT_READ | PROT_WRITE ), vùng nhớ dùng chung cho tất tiến trình (MAP_SHARED ) mem_addr_cs = mmap(NULL, 1024, (PROT_READ|PROT_WRITE), MAP_SHARED, CS_fd, 0x48000000); o Ở sử dụng hai vùng nhớ MSC1 MSC2 MSC1Reg = (unsigned long*) (mem_addr_cs + 3); *MSC1Reg = 0x5AA85AA8; MSC2Reg = (unsigned long*) (mem_addr_cs + 4); MSC2Reg = 0x24402448; o Theo qui định nhà sản xuất giá trị để đăng kí sử dụng nhớ sau: Bộ nhớ Giá trị qui định MSC1 0x0000 5AA8 – 0x5AA8 5AA8 MSC2 0x0000 2448 – 0x2440 2448 - 88 - CHƯƠNG ỨNG DỤNG - Bộ nhớ MSC0 khơng có giá trị mặc định, nhớ khơng ánh xạ thiết bị xuất nhập - Xử lý ghi thông qua biến //Thanh ghi Keypad unsigned char *KeypadIn, *KeypadOut; //Thanh ghi 7-Segment unsigned char *SevenSegReg; //Thanh ghi đèn LED unsigned char *ExtBD_LEDReg; - Các biến trỏ đến địa cụ thể Keypad, 7-Segment, đèn LED Giá trị ánh xạ thiết bị ngoại vi vào nhớ sau: Địa Thông tin ghi sử dụng 0x0800 000A Keypad Input 0x0800 000C Keypad Output 0x1408 0000 7-Segment 0x1410 0000 LEd - Xử lý biến thông qua hàm như: o Hiển thị lên 7-Segment Void View7Seg(); Các giá trị tương ứng hiển thị: Giá trị 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 Hiển thị Trong giá trị tương ứng với đèn 7-Segment 7-Segment Giá trị Đèn 0x00 Đèn 0x10 Đèn 0x20 Đèn 0x30 - 89 - CHƯƠNG ỨNG DỤNG Đèn 0x40 o Nhập liệu nhấn phím void insertValue(unsigned char value); Các giá trị nhận vào nhấn phím Key in Key out Giá trị 0x01 0x01 0x02 0x04 0x08 * 0x01 0x02 0x04 0x08 0x01 0x02 0x04 0x08 # 0x02 0x04 o Hiển thi đèn Led: void ViewLed(); Các giá trị hiển thị Đèn Giá trị 0x01 0x02 0x04 0x08 0x10 0x20 0x40 0x80 - 90 - CHƯƠNG ỨNG DỤNG Ở đèn led gọi hiển thị thông qua định thời gian Timer: Bộ định thời sau giây thực gọi hàm handler() có tín hiệu ALARM Hàm xử lý tín hiệu void handler (int sig); o Các hàm thực hiện: Nắm bắt tín hiệu hàm signal() Gửi tín hiệu hàm setitimer() // Nam bat tin hieu ALARM xu ly tren Led signal (SIGALRM, handler); //Goi tin hieu ALARM sau giây settimer(ITIMER_REAL, &itv, (struct itimerval *)0); Các bước đóng gói chương trình ứng dụng Trước đóng gói kiểm tra tập tin kernel “kernel.ram” nén hỗ trợ boot ramdisk, chưa có xem lại phần đóng gói kernel Chúng ta thực đóng gói ứng dụng dùng ramdisk để boot sau: Biên dịch chương trình keypad.c thành keypad: #arm-linux-gcc –o keypad_Seg keypad.c Sau biên dịch chép tập tin keypad vào thư mục: /home/lds/LDS2000/ramdisk/image/bin: #cp keypad_Seg /home/lds/LDS2000/ramdisk/image/bin Chuyển tới thư mục /home/lds/LDS2000/ramdisk sử dụng cơng cụ tạo ramdisk với kích thước 16384 byte: #./ramdisk.make 16384 Thực giao tiếp thông qua cổng (RS232): #minicom Có thể xem lại cấu hình minicom phần - 91 - CHƯƠNG ỨNG DỤNG Thực trình boot sau: #tftp a0000000 kernel.ram #tftp a1000000 ramdisk.fs.gz #bootm a0000000 Nếu kết boot thành cơng kết shell bash hiển thị sau: bash-2.03# chuyển đến thư mục bin bash-2.03# cd /bin Kiểm tra thông tin thư mục /bin bash-2.03# ls –al Thực thi ứng dụng LDS2000: bash-2.03# keypad_Seg - 92 - CHƯƠNG HẠN CHẾ VÀ HƯỚNG PHÁT TRIỂN Chương HẠN CHẾ VÀ HƯỚNG PHÁT TRIỂN Hạn chế kết đạt Kết đạt Sau trình nghiên cứu tìm hiểu chúng em thu số kết mục tiêu ban đầu đặt sau: Tìm hiểu lý thuyết hệ thống nhúng linux Lý thuyết lập trình linux lập trình nhúng linux Demo thiết bị LDS2000 Không chúng em có kinh nghiệm làm việc nhóm, làm việc độc lập, tinh thần tự nghiên cứu… kinh nghiệm q báu để chúng em vững bước sau trường Hạn chế Với gần bốn tháng tìm hiểu viết ứng dụng khoảng thời gian không đủ để nghiên cứu sâu hệ thống nhúng, để viết ứng dụng thiết thực cho hệ thống Chính kết luận văn khái niệm ứng dụng lập trình hệ thống nhúng Linux Mặc dù chúng em cố gắng nhiều chúng em chưa thực việc truyền liệu NFS Chúng em tiếp tục tìm hiểu thời gian tới để trình thực thi ứng dụng nhúng dễ dàng Hướng phát triển Trong tương lai chúng em hy vọng với tảng kiến thức kinh nghiệm thu suốt thời gian nghiên cứu đề tài vừa qua, chúng em xây dựng ứng dụng mang tính thực tiễn có ích cho sống Với nội dung đúc kết, chúng em hy vọng sở để bạn muốn tìm hiểu lập trình hệ thống nhúng nhanh chóng tiếp cận khái niệm để viết ứng dụng - 93 - PHỤ LỤC A MỘT SỐ LỆNH CỦA HỆ ĐIỀU HÀNH LINUX PHỤ LỤC A Một số lệnh hệ điều hành linux Sử dụng lệnh: man [tên lệnh] để biết rõ ý nghĩa tùy chọn Lệnh Ý nghĩa (Command) cat [options] [files] Tham số (options) Đọc hay nhiều tập tin in -E -v - thiết bị xuất chuẩn t… cd Chuyển thư mục hành chmod [options] mode files Thay đổi quyền truy cập -c, -f … hay nhiều tập tin chown newowner files Thay đổi quyền sở hữu tập tin clear Xóa hình cp [options] file1 file2 Sao chép tập tin hay thư mục cp [options] file drectory dd [options = value] -f, -R, u… Sao chép tập tin đặt biệt if, of, bs, count… gcc [options] [files] Biên dịch chương trình C -o, -V… grep [options] patten [files] Tìm kiếm hay nhiều files so -c, -f, - khớp với nội dung patten l… grip [options] [files] Nén tập tin -c, -t, - gunzip [options] [files] Giải nén tập tin có đuôi gz N… insmod Nạp tập tin module ( -o, -f … file.o, file.mod ) vào nhân ls [options] [names] Liệt kê nội dung thư mục -s , -a , l, -d … man Xem thông tin lệnh - 94 - PHỤ LỤC A MỘT SỐ LỆNH CỦA HỆ ĐIỀU HÀNH LINUX minicom Giao tiếp qua cổng -s mkdir Tạo thư mục -m, -p… mke2fs [options] device [blocks] Định dạng thiết bị -b, -c, … Mount [options] [special-device] Kết nối hệ thống tập tin vào -t… [directory] thư mục mv Di chuyển đổi tên tập tin -f, -u… hay thư mục rm Xóa tập tin hay thư mục -d, -f… rmmod [options] module Xóa tập tin module -r rpm [options] Quản lý gói linux -i, -u, -p umount [options] [special- Tháo kết nối hệ thống tập -a, -t, -n device/directory] tin vi file | +n files | +/pattern files Trình soạn thảo - 95 - PHỤ LỤC B MỘT SỐ HÀM CỦA LINUX VÀ NGÔN NGỮ C PHỤ LỤC B Một số hàm Linux ngôn ngữ C #include void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset); Hàm mmap thực ánh xạ tập tin đối tượng fd định với chiều dài length byte vị trí bắt đầu offset vào nhớ (offset tập tin đối tượng mà fd mô tả) start thường có giá trị (NULL) Tham số prot dùng để bảo vệ nhớ (không xung đột với kiểu mở tập tin) có giá trị PROT_NONE OR với số cờ PROT_* đây: PROT_EXEC vùng nhớ ánh xạ thực thi PROT_READ vùng nhớ ánh xạ đọc PROT_WRITE vùng nhớ ánh xạ ghi PROT_NONE vùng nhớ khơng có quyền truy cập Tham số flags định kiểu đối tượng ánh xạ tuỳ chọn ánh xạ vùng ánh xạ dành riêng cho tiến trình hay dùng chung tiến trình Nó có giá trị bit MAP_FIXED: khơng chọn địa khác địa định, kích thước vùng nhớ bắt đầu start với chiều dài length bị tràn qua vùng nhớ ánh xạ phần chiều dài tràn qua bị bỏ địa khơng sử dụng hàm mmap lỗi MAP_SHARED chia sẻ ánh xạ cho tất tiến trình ánh xạ đến đối tượng Lưu trữ miền tương đương ghi tập tin Tập tin không thực cập nhật hàm msync hay munmap gọi MAP_PRIVATE: tạo ánh xạ riêng tiến trình cho chép ghi Lưu trữ miền không thực ảnh hưởng tập tin gốc Tập tin không thay đổi sau hàm mmap rõ miền ánh - 96 - PHỤ LỤC B MỘT SỐ HÀM CỦA LINUX VÀ NGÔN NGỮ C xạ Chúng ta phải định xác tuỳ chọn cặp MAP_SHARED vàP_PRIVATE Giá trị trả về: Nếu thành công hàm mmap trả trỏ tới vùng ánh xạ, lỗi giá trị trả MAP_FAILED ( (void *) -1) int munmap(void *start, size_t length); Hàm munmap ngắt vùng ánh xạ vị trí start với kích thứơc length Vùng ánh xạ ngắt tự động tiến trình kết thúc Mặt khác đóng tập tin mơ tả không làm ngắt miền ánh xạ Giá trị trả về: Nếu thành cơng hàm munmap trả cịn thất bại trả -1 int settimer(int which, const struct itimerval *value, const struct itimerval *ovalue ) Gửi tín hiệu khoảng thời gian định trước Khi đếm thời gian kết thúc tín hiệu gửi đến tiến trình đếm thời gian khởi động lại Các tham số: Which tín hiệu gửi có tín hiệu thơng qua sau: ITIMER_REAL: gửi tín hiệu SIGALRM ITIMER_VIRTUAL : gửi tín hiệu SIGVTALRM ITIMER_PROF: gửi tín hiệu SIGPROF Value ovalue kiểu cấu trúc khai báo sau: struct itimerval { struct timeval it_interval; struct timeval it_value; } Trong đó: it_interval giá trị khởi đầu đếm thời gian kết thúc it_value giá trị định để thực thi đếm thời gian struct timeval { long tv_sec; long tv_usec; } - 97 - THUẬT NGỮ Thuật ngữ host target interface Định nghĩa Đây máy chủ kết nối với đối tượng nhúng Là đối tượng nhúng Ghép nối hai linh kiện thiết bị thuộc phần cứng, hai trình ứng dụng người sử dụng chương trình ứng dụng bus Đường dẫn điện nội mà theo tín hiệu truyền từ phận qua phận khác máy tính CS module Loại mạch điện tử siêu nhỏ lựa chọn Đây đơn vị đoạn có khả thực chức riêng kernel Trong hệ điều hành phần cốt lõi chương trình cư trú nhớ thực hầu hết nhiệm vụ điều hành chính, quản lý nhớ boot Khởi động thủ tục bao gồm xoá nhớ, nạp hệ điều hành chuẩn bị cho máy tính sẵn sàng để sử dụng bootloader menu Trình khởi động Một hiển thị hình nhằm liệu kê chức chọn lệnh có sẵn card Một board mạch điện từ thiết kế để cắm vừa vào khe bus mở rộng máy tính Board Một plastic gắn sẵn mạch điện cross-platform Các ứng dụng tương thích với nhiều hệ điều hành TFTP Giao thức truyền tập tin ftp giảm chức để dùng tài nguyên Sử dụng giao thức UDP NFS Hệ thống dịch vụ phân phối tập tin mạng, cung cấp tập tin dùng chung cho môi trường mạng - 98 - TÀI LIỆU THAM KHẢO Sách Karim Yaghmour (4/2003) Building Embedded Linux System O'Reilly Richard Stones Neil Matthew (2003) Beginning Linux Program, nd Editon Michael Barr (1999) Programming Embedded Systems in C and C++ O'Reilly Alessandro Rubini and Jonathan Corbet Linux Device Drivers O'Reilly Arnold S Berger Embedded Systems Design PGS TSKH Phạm Thượng Cát (2001) “HỆ THỐNG NHÚNG VÀ SỰ PHÁT TRIỂN CỦA CÔNG NGHỆ THÔNG TIN” Website http://www.corebell.com Corebell System Inc http://www.wikipedia.com Quỹ Hỗ trợ Wikimedia http://redhat.com Solaris - 99 - ... trình ứng dụng LDS2000 o Viết ứng dụng minh họa thiết bị LDS2000 Phương hướng giải - Với đề tài mục tiêu luận văn chúng tơi là: o Tìm hiểu khái niệm hệ thống nhúng o Tìm hiểu khái niệm lập trình nhúng. .. nước khu vực giới trình hội nhập kinh tế toàn cầu Với phát triển hệ thống nhúng thấy, chúng em định chọn đề tài luận văn ? ?Tìm hiểu lập trình nhúng linux: Viết ứng dụng minh hoạ LDS2000? ?? Mục tiêu... 4-bit - 45 - CHƯƠNG TỔNG QUAN LẬP TRÌNH NHÚNG TRÊN LINUX Chương TỔNG QUAN LẬP TRÌNH NHÚNG TRÊN LINUX Lập trình Linux 1.1 Xử lý tập tin 1.1.1 Các cách xử lý tập tin linux - Các hàm xử lý tập tin