BỘ GIÁO DỤC & ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ-CÔNG NGHIỆP
** ĐỒ ÁN TỐT NGHIỆP
NGÀNH KỸ THUẬT ĐIỆN - ĐIỆN TỬ
ĐỀ TÀI:
NGHIÊN CỨU VÀ BIÊN SOẠN
GIÁO TRÌNH KIT KM9260
TRÊN NỀN LINUX. GVHD: ThS Nguyễn Đình Phú;
SVTH: Nguyễn Tấn Như;
MSSV: 07101080.
Tp. Hồ Chí Minh - 2/2012
BỘ GIÁO DỤC & ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ-CÔNG NGHIỆP
**
ĐỒ ÁN TỐT NGHIỆP
NGÀNH KỸ THUẬT ĐIỆN - ĐIỆN TỬ
ii
Bộ Giáo Dục Và Đào Tạo CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Trường Đại Học Sư Phạm Kỹ Thuật Độc lập - Tự do - Hạnh phúc
Thành Phố Hồ Chí Minh
KHOA ĐIỆN - ĐIỆN TỬ
NGÀNH KỸ THUẬT ĐIỆN TỬ
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ và tên: NGUYỄN TẤN NHƯ MSSV: 07101080
Lớp: 071012B
Ngành: KỸ THUẬT ĐIỆN - ĐIỆN TỬ
Hệ: ĐẠI HỌC CHÍNH QUY
Niên khóa: 2007– 2012
1.Tên đề bài:
“
NGHIÊN CỨU VÀ BIÊN SOẠN GIÁO TRÌNH KIT NHÚNG KM9260
hơn cho cuộc sống con người. Góp phần to lớn trong quá trình phát triển của khoa học kỹ
thuật là sự phát triển mạnh mẽ của vi xử lý. Từ bộ vi xử lý đầu tiên Intel 4004 được sản
xuất bởi công ty Intel vào năm 1971, đến nay ngành công nghiệp vi xử lý đã phát triển
vượt bậc và đa dạng với nhiều loại như: 8951, PIC, AVR, ARM, Pentium,Core i7,….
Cùng với sự phát triển đa dạng về chủng loại thì tài nguyên của vi xử lý cũng được
nâng cao. Các vi xử lý ngày nay cung cấp cho người dùng một nguồn tài nguyên rộng lớn
và phong phú. Có thể đáp ứng được nhiều yêu cầu khác nhau trong thưc tế. Để giúp cho
người dùng sử dụng hiệ
u quả và triệt để các tài nguyên này thì hệ thống nhúng ra đời. Hệ
thống nhúng (Embedded system) là một thuật ngữ để chỉ một hệ thống có khả năng tự trị
được nhúng vào trong một môi trường hay một hệ thống mẹ. Đó là các hệ thống tích hợp
cả phần cứng và phần phềm phục vụ các bài toán chuyên dụng trong nhiều lĩnh vực công
nghiệp, tự động hoá điều khiể
n, quan trắc và truyền tin. Với sự ra đời của hệ thống nhúng
thì vi xử lý ngày càng được ứng dụng rộng rãi trong đời sống cũng như trong công
nghiệp vì khả năng xử lý nhanh, đa dạng, tiết kiệm năng lượng và độ ổn định của hệ
thống nhúng.
Những năm gần đây, sự năng động và tích cực hội nhập quốc tế đã đem về h
ơi thở
mới cho Việt Nam về mọi mặt: kinh tế, xã hội, văn hóa, nghệ thuật … Lĩnh vực kỹ thuật
nói chung và kỹ thuật điện tử nói riêng cũng có những thay đổi theo chiều hướng tích
cực. Bên cạnh việc áp dụng những kỹ thuật mới (chủ yếu mua từ nước ngoài) vào sản
xuất, nhiều công ty ở Việt Nam đã chú trọng đến việc phát triển độ
i ngũ R&D (Research
And Development) để tự chế tạo sản phẩm hoàn thiện cung ứng cho thị trường. Một
trong những sản phẩm đó là kit KM9260 là một kit nhúng được tích hợp cao trên nền vi
điều khiển AT91SAM9260.
Tuy hệ thống nhúng rất phổ biến trên toàn thế giới và là hướng phát triển của ngành
Điện tử sau này nhưng hiện nay ở Việt Nam độ ngũ kỹ sư hiểu biết về hệ thố
ng nhúng
LỜI CẢM ƠN
Lời đầu tiên, sinh viên thực hiện đề tài xin được phép chân thành gửi lời cảm ơn đến
thầy Nguyễn Đình Phú, giáo viên hướng dẫn đề tài, đã định hướng và trao đổi những
kinh nghiệm quý báo để em thực hiện những nội dung trong đề tài này cách hoàn chỉnh.
Kế đến, em cũng xin tỏ lòng biết ơn đến thầy Nguyễn Tấn Thịnh, cựu sinh viên của
trường Đại Học Sư Phạm Kỹ Thuật, đã giúp em có được những kiến thức rất cơ bản có
vai trò là nền tảng để giúp em phát triển những nội dung trong đề tài.
Em cũng xin trân trọng cảm ơn các thầy cô trong trường Đại Học Sư Phạm Kỹ Thuật
đã tận tình truyền đạt những kiến thức và tình yêu nghề để em có sự đam mê nghiên cứu
khám phá những kiến thức mới trong ngành.
Cuối cùng em xin dâng lời cảm ơ
n đến Chúa Giêsu, cha, mẹ và những người thân
trong gia đình, bạn bè, đã tạo điều kiện thuận lợi vể tinh thần và vật chất giúp em hoàn
thành đề tài này.
TP.HCM, Ngày tháng năm 2012
Sinh viên thực hiện đề tài
Nguyễn Tấn Như
5.3 Hướng phát triển 118
PHẦN C: PHU LỤC………………………………………………. 119
vii LIỆT KÊ HÌNH VẼ
Hình Trang
Hình 2.1: Sơ đồ khối tổng quát VN8-01 6
Hình 2.2: Sơ đồ chân VN8-01 7
Hình 2.3: CPU xử lý 5 giai đoạn 10
Hình 2.4: Kiến trúc đường ống 5 tầng 11
Hình 2.5: 1 lệnh đơn cần 5 xung clock 11
Hình 2.6: Tổ chức bộ nhớ chương trình trong VN8-01 12
Hình 2.7 Hoạt động của PC đối với lệnh thường và lệnh rẽ nhánh 13
Hình 2.8: Cấu trúc của 1 lệnh đơn 14
Hình 2.9: Các nguồn ngắt của VN8-01 17
Hình 2.10: Hoạt động của Stack và thanh ghi PC 18
Hình 2.11: Cấu trúc thanh ghi INTCON 19
Hình 2.12: Cấu trúc thanh ghi PIR1 20
Hình 2.13: Cấu trúc thanh ghi PIE1 21
Hình 2.40: Lấy mẫu dữ liệu ứng với BaudRate = Fosc/(64x(X+1)) 58
Hình 2.41: Lấy mẫu dữ liệu ứng với Baud Rate = fosc/(16x(X+1)) 58
Hình 2.42: Lấy mẫu d
ữ liệu ứng với Baud Rate = fosc/(8x(X+1)) 58
Hình 2.43: Cấu tạo của bộ truyền USART 60
Hình 2.44: Truyền bất đồng bộ 1 khung dữ liệu dạng truyền đơn lẻ 61
Hình 2.45: Truyền bất đồng bộ Back-to-Back 61
Hình 2.46 Cấu tạo bộ nhận bất đồng bộ USART 62
Hình 2.47: Quá trình truyền đồng bộ Master 65
Hình 2.48: Chế độ nhận đồng bộ Master (nhận 1 lần) 67
ix
Hình 2.49: Hoạt động truyền trong chế độ Standby (đồng bộ Slave) 69
Hình 2.50: Hoạt động nhận trong chế độ Standby (đồng bộ Slave) 70
Hình 3.1 Giản đồ thời gian thể hiện tín hiệu xung reset và xung presence 74
Hình 3.2: Giản đồ trình tự thời gian của xung reset & presence 74
Hình 3.3: Giản đồ thời gian cho VN8-01 ghi tín hiệu mức 1 & mức 0 75
Hình 3.4: Giản đồ thời gian để VN8-01 đọc tín hiệu mức 1 & 0 75
Hình 3.5: Dạng đóng gói TO-92 77
Hình 3.6: Dạng đóng gói SO 77
Hình 3.7: Mô tả chi tiết giá trị
bit trong bộ nhớ lưu giá trị chuyển đổi 78
Hình 3.8: Thể hiện cấu trúc bộ nhớ DS18B20 79
Hình 3.9: Thanh ghi cấu hình độ phân giải (byte4) 80
Hình 3.10: Nguồn cung cấp qua đường tín hiệu 83
Hình 3.11: DS18B20 với nguồn cung cấp độc lập 83
Hình 3.12: Kết nối phần cứng các thiết bị giao tiếp I2C 85
Hình 3.13: Quan hệ truyền/nhận dữ liệu giữa thiết bị chủ/tớ 85
Hình 3.14: Giản đồ thể hiện tín hiệu xung Start và Stop 87
LIỆT KÊ BẢNG
Bảng Trang
Bảng 2.2: Vùng giá trị bộ nhớ Ram/bank………………………………………….14
Bảng 2.3: Mô tả thanh ghi INTCON……………………………………………….19
Bảng 2.4: mô tả thanh ghi PIR1……………………………………………………20
Bảng 2.5: Mô tả thanh ghi PIE1……………………………………………………21
Bảng 2.6: Mô tả thanh ghi OPTION………………………………………………22
Bảng 2.6: Mô tả thanh ghi OPTION………………………………………………25
Bảng 2.7: Mô tả thanh ghi T1CON……………………………………………… 29
Bảng 2.8: Mô tả thanh ghi T2CON……………………………………………… 32
Bảng 2.9: Mô tả thanh ghi CCPCON………………………………………………39
xi
Bảng 2.10: Mô tả nội dung bít cờ ngắt…………………………………………… 40
Bảng 2.11: Mô tả chức năng bit CCPIE……………………………………………40
Bảng 2.12: Mô tả chức năng thanh thi TXSTA……………………………………51
Bảng 2.13: Mô tả chức năng thanh ghi RCSTA………………………………… 52
1 CHƯƠNG I
DẪN NHẬP
ĐỒ ÁN TỐT NGHIỆP
CHƯƠNG I: DẪN NHẬP.
2
nghiên cứu và phát triển cho ngành hệ thống nhúng từ trong các trường đại học và trung
tâm nghiên cứu, cũng như trang bị những kiến thức về lý thuyết và thực hành cho
những sinh viên trẻ, đáp ứng nhu c
ầu ngày càng cao của nhà tuyển dụng. Muốn vậy vấn
đề đặt ra là phải có một chương trình được thiết kế chuyên sâu cả về lý thuyết và thực
hành trong các cơ sở đào tạo chính quy để định hướng ban đầu cho các sinh viên
ĐỒ ÁN TỐT NGHIỆP
CHƯƠNG I: DẪN NHẬP.
3
theo học tại trường có một niềm đam mê lĩnh vực lập trình nhúng đầy tiềm năng này, tạo
một nền tảng vững chắc cho sự phát triển bền vững và nhanh chóng trong tương lai.
Một trong những yếu tố quan trong nhất quyết định đến chất lượng thành công của
chương trình đào tạo là tài liệu hướng dẫn thực hiện chương trình đào tạo đó. Vì thế việc
biên soạn một giáo trình đầy đủ, chuyên sâu, giảng dạy song hành giữa lý thuyết và thực
hành để người học không chỉ nắm vững nguyên lý hoạt động mà còn có thể thao tác điều
khiển vào những ứng dụng thực tế của hệ thống nhúng, từ đó tự mình có thể nghiên cứu
phát triển trong các môi trường chuyên nghiệp sau này là một nhu cầu cấp thiết.
1.2. LÝ DO CHỌN ĐỀ TÀI
Tên đề tài của nhóm là “NGHIÊN CỨU VÀ BIÊN SOẠN GIÁO TRÌNH KIT
NHÚNG KM9260 TRÊN NỀN LINUX”.
Khi một họ CHIP vi điều khiển mới được ra đời, cùng với những tính năng vượt trội
hơn so với các vi điều khiển khác, nhà sản xuất thường cho ra đời các kit nhúng sử dụng
ngay những CHIP này để làm nổi bật những tính năng mà nó hỗ trợ. Kit nghiệm KM9260
là một loại như thế. Được xây dựng dựa vào cấu trúc hệ
thống nhúng at91sam9260-ek
của hãng Atmel, kit được tích hơp rất nhiều ngoại vi thích hợp với những đặc điểm của
hệ thống nhúng để nhóm chúng em chọn làm đề tài nghiên cứu của mình.
Việc lựa chọn một kit cụ thể để viết giáo trình hướng dẫn lập trình ứng dụng trong
hệ thống nhúng được quyết định bởi ba lý do sau:
Ưu điểm đầu tiên là Linux có mã nguồn mở, chúng ta có thể thao tác chỉnh sửa
mã nguồn này để phù hợp với hệ thống. Hiện này Linux hỗ trợ cho rất nhiều
dòng vi điều khiển khác nhau như: ARM, AVR, nên khi nghiên cứu linux
chúng ta có thể dễ dàng làm việc trên nhiều hệ thống khác.
Linux được xây dựng hoàn toàn bằng ngôn ngữ lập trình C. Đây là ngôn ngữ
thông dụng và phổ biến. Người học khi nghiên cứu sẽ dễ dàng tiếp thu được
thuật toán chương trình điều khiển và nguyên lý làm việc của hệ thống.
Có rất nhiều sách hay và thông tin bàn luận về hệ điều hành này trên internet.
Do đó khi nghiên cứu người học có thể tìm hiểu trên mọi kênh thông tin để nắm
vững nội dung của bài học.
Và còn rất nhiều ưu điểm khác, những ưu điểm này sẽ được người học nhận ra
trong quá trình sử dụng.
Với những lý do trên nhóm chúng em chọn đề tài : ”NGHIÊN CỨU VÀ BIÊN
SOẠN GIÁO TRÌNH KIT NHÚNG KM9260 TRÊN NỀN LINUX” làm đề tài tốt
nghiệp của mình. Với mục đích làm tài liệu nghiên cứu cho các bạn sinh viên mong
muốn tìm hiểu thế giới lập trình nhúng đầy thú vị, góp phần làm cho môn học này được
phát triển rộng rãi trong độ
i ngũ kỹ sư trẻ của nước ta, nâng cao chất lượng của nguồn
nhân lực.
1.3.
ĐỐI TƯỢNG NGHIÊN CỨU
Đề tài này tập trung nghiên cứu chủ yếu là phần mềm hệ thống nhúng linux trên kit
ARM KM9260. Những kiến thức về hệ điều hành nhúng bao gồm driver và application
được hiện thực hóa thông qua các bài thực hành trên kit thí nghiệm. Các bài thực hành
được xây dựng từ đơn giản đến nâng cao điều khiển các thiết bị ngoại vi được tích hợp
ĐỒ ÁN TỐT NGHIỆP
tương ứng trên kit để kit có thể chạy hệ điều hành nhúng thành công. Phần này
còn trình bày cách biên dịch, chạy một chương trình ứng dụng và cách biên dịch,
cài đặt một driver.
Lập trình hệ thống nhúng nâng cao:
Bao gồm kiến thức về mối quan hệ giữa hai lớp user và kernel trong hệ thống phần
mềm nhúng.
ĐỒ ÁN TỐT NGHIỆP
CHƯƠNG I: DẪN NHẬP.
6
- Đối với lớp user, đề tài cung cấp những thông tin các hàm hỗ trợ trong quản lý
thời gian thực của hệ thống, các lệnh hỗ trợ lập trình đa tuyến và tiến trình. Cho
người học có một tầm nhìn tổng quát trong phương pháp lập trình bằng hệ điều
hành. Đề tài không đi sâu tìm hiểu vấn đề xung đột trong truy xuất dữ liệu giữa
các tuyến và các tiến trình với nhau mà chỉ nêu những kiến thức đủ để thực hiện
các bài tập ví dụ trong đề tài.
- Đối với lớp kernel, đề tài cung cấp những thông tin chủ yếu về driver, vai trò, vị
trí và phân loại driver trong hệ thống phẩn mềm nhúng. Đi sâu vào tìm hiểu
character device driver, các hàm giao diện, các bước hoàn chỉnh để viết và đưa
một driver (loại character) hoạt động trong hệ thống. Bên cạnh đó đề tài giáo trình
còn trình bày các hàm thao tác trong gpio, quản lý và truy xuất thời gian thực
trong kernel làm cơ sở cho điều khiển các thiết bị ngoại vi.
Thực hành giao tiếp các thiết bị ngoại vị:
Bao gồm nhiều bài thực hành khác nhau, mỗi bài sẽ điều khiển một loại thiết bị ngoại
vi. Đề tài sẽ cung cấp mã chương trình ví dụ cho cả hai phần driver và application cho
mỗi bài ví dụ. Các thiết bị ngoại vi là những linh kiện hiển thị đơn giản, các linh kiện đo
lường, điều khiển; các chuẩn giao tiếp như UART, I2C, 1-Wire.
Do hạn ch
- Phần mềm hệ thống nhúng trên kit km9260
Các phần mềm hổ trợ trong quá trình sử dụng kit: Hướng dẫn các thao tác sử
dụng phần mềm và chức năng của từng phần mề
m. Phần này bao gồm:
- Chương trình máy tính ảo Vmware Workstation
- Chương trình Samba
- Chương trình Putty
- Chương trình tftpd32
- Chương trình SSH SECURE SHELL CLIENT
Hướng dẩn nạp phần mềm hệ thống và biên dịch phần mềm ứng dụng cho kit:
Phần này bao gồm:
- Trình biên dịch chéo Cross Toolchians
- Các bước biên dịch Kernel
- Chỉnh sửa Kernel
- Các biến môi trường và lệnh cơ bản của U-boot
- Cài đặt cho hệ thống
- Các bước biên dịch Driver và cài đặt Driver
- Các bước biên dịch chương trình
ứng dụng và chạy chương trình ứng dụng
1.5.2. Lập trình nhúng nâng cao:
Lập trình user application: Cung cấp cho người học những kiến thức cần thiết
để có thể viết một chương trình ứng dụng chạy trong lớp user. Phần này bao
gồm những nội dung:
ĐỒ ÁN TỐT NGHIỆP
CHƯƠNG I: DẪN NHẬP.
8
- Chương trình helloworld: Đây là chương trình đơn giản, cung cấp kiến thức
về các hàm đơn giản trong C (hàm printf(), hàm exit()) và khắc phục những
lỗi xảy ra trong quá trình biên dịch chương trình user sao cho có thể chạy
- Các bước để viết một character driver: Căn cứ vào những kiến thức lý
ĐỒ ÁN TỐT NGHIỆP
CHƯƠNG I: DẪN NHẬP.
9
thuyết được trình bày trong những bài trước. Bài này rút ra những bước cần
thiết cần phải tiến hành để lập trình thành công một character driver. Nhắc
lại thao tác biên dịch driver trong linux.
- Helloworld driver: Đưa ra ví dụ minh họa lập trình một character driver
hoàn chỉnh mang tên helloworld.ko. Driver này sử dụng tất cả những giao
diện hàm đã được giới thiệu đồng thời còn lập trình sẵn một chương trình
user application liên kết giữa người dùng với driver, sử dụng t
ất cả những
chức năng mà nó hỗ trợ.
- Các hàm trong GPIO: Giới thiệu cho người học những kiến thức về điều
khiển các cổng vào ra gpio. Bao gồm quy định số chân, các hàm khởi tạo,
truy xuất các chân trong CHIP vi điều khiển.
- Trì hoãn thời gian trong kernel: Cũng tương tự như trong phần lập trình
user, bài này cung cấp những kiến thức về quản lý thời gian trong kernel;
các hàm truy xuất thời gian thực; thao tác khởi tạo ngắt dùng timer trong
kernel.
1.5.3. Lập trình giao tiếp phần cứng:
Bao gồm những bài thực hành riêng lẽ, được sắp sếp theo thứ tự từ dễ đến khó. Mỗi
bài sẽ điều khiển một hoặc nhiều thiết bị ngoại vi tùy theo yêu cầu của bài toán. Hầu hết
đều ứng dụng những kiến thức đã học trong phần lập trình user application và lập trình
kernel driver. Các bài thực hành bao gồm:
Điều khiển LED đơn;
Điều khiển 2 LED 7
đoạn rời;
Điều khiển nhiều LED 7 đoạn bằng phương pháp quét;
ngoại ngữ
dồi dào.
Các giáo trình đã có đa số trình bày những ví dụ tổng quát theo hướng tất cả các hệ
thống đều có thể thực thi. Chưa có những ví dụ về lập trình phần cứng điều khiển các
thiết bị ngoại vi cụ thể.
Đề tài được nghiên cứu nhằm khắc phục những nhược điểm trên. Nghiên cứu một đối
tượng cụ thể sẽ giúp cho người h
ọc ứng dụng ngay những gì đã lĩnh hội vào thực tiễn. Từ
đó khắc sâu lý thuyết, có thể áp dụng vào những hệ thống tương tự.
1.7. Ý NGHĨA THỰC TIỄN.
Lập trình hệ thống nhúng là một lĩnh vực mới có triển vọng của nước ta trong những
năm gần đây. Thúc đẩy sự phát triển trong lĩnh vực này ngoài việc thu hút đầu tư thì việc
phát triển đội ngũ kỹ sư có kinh nghiệm là điều quan trong nhất.
Đề tài được biên soạn với những bài thực hành xen kẽ lý thuyết được sắp sếp theo
từng mức độ giúp cho người học không chỉ nắm vững lý thuyết mà còn có thể thao tác
ĐỒ ÁN TỐT NGHIỆP
CHƯƠNG I: DẪN NHẬP.
11
điều khiển trên mạch phần cứng. Vì đa số các hệ thống nhúng hoạt động trên nền hệ điều
hành linux đều theo một chuẩn chung nên khi tiếp xúc với các hệ thống khác người học
có thể tự mình nghiên cứu tìm hiểu.
Đề tài được thiết kế theo kit KM9260, là kit thí nghiệm lập trình nhúng được tích hợp
nhiều ngoại vi và các chân giao tiếp vào ra, thuận lợi cho việc kết nối với các bộ thí
nghiệm khác hoặ
c lắp đặt vào các bộ phận chuyên biệt. Điều này làm tiếc kiệm chi phí
thiết kế, tận dụng những bộ thí nghiệm hiện có, ứng dụng lập trình thành công có thể áp
dụng vào dự án nhanh chóng.
Đề tài khi được áp dụng vào chương trình giảng dạy sẽ góp phần làm phổ biến thêm