Tải bản đầy đủ (.doc) (42 trang)

Thiết kế và hiện thực mô hình đếm xe hơi trên BOAR OMAP 3530 OVM của TEXAS INSTRUMENT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1014.29 KB, 42 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH

BÁO CÁO THỰC TẬP TỐT NGHIỆP
Đề tài :

THIẾT KẾ VÀ HIỆN THỰC MÔ HÌNH ĐẾM XE
HƠI TRÊN BOARD OMAP 3530 EVM CỦA
TEXAS INSTRUMENTS
Giáo viên hướng dẫn:
Thầy Nguyễn Hòa Hưng

Thành Phố Hồ Chí Minh, Tháng 06 năm 2011


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM

MỤC LỤC
1 MỤC LỤC HÌNH.........................................................................................................3
2 Chương 1 : Giới thiệu đề tài.........................................................................................5
3 Chương 2 : Động lực và mục tiêu của đề tài................................................................6
4 Chương 3 : Cơ sở lý thuyết và các công cụ..................................................................9
Hình 3.1 Board OMAP 3530 EVM Texas Instruments...............................................11
Hình 3.2 : Chi tiết phần cứng trên board OMAP3530 EVM.......................................12
Hình 3.3 : Cấu hình Minicom.......................................................................................14
Hình 3.4 : Bootloader OMAP3530 EVM.....................................................................15
Hình 3.5 : Chọn platform download toolchain từ CodeSourcery................................17
Hình 3.6 : Hoàn tất cài đặt toolchain............................................................................18
Hình 3.7 : Camera Creative..........................................................................................20
Hình 3.7 : Màn hình hiển thị sau khi chạy xong lệnh configure.................................23


Hình 3.8 : Kết quả sau khi chạy xong lệnh make install..............................................23
Hình 4.1 : Màn hình hiển thị sau khi configure...........................................................26
Hình 4.1 : Mô hình codeword.......................................................................................31
Hình 5.4 : Ảnh nhị phân cần tìm đường bao................................................................36
Hình 5.5 : Một ảnh ví dụ áp dụng giải thuật tìm đường bao và được chia làm hai loại: đường
bao (countour) hoặc các lỗ (hole)............................................................................37
Hình 5.6: Cách thức quản lý các điểm nút...................................................................38
Hình 5.7 (a) Ảnh foreground (b) Mô phỏng các đường bao (đỏ) và các lỗ (xanh).....38
5 Chương 4 : Hiện thực.................................................................................................41
6 Chương 5 : Tổng kết đề tài.........................................................................................41
7 Chương 6 : Hướng phát triển và tài liệu tham khảo...................................................41

Trang 2 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
1 MỤC LỤC HÌNH
Hình 3.1 Board OMAP 3530 EVM Texas Instruments................................................11
Hình 3.2 : Chi tiết phần cứng trên board OMAP3530 EVM........................................12
Hình 3.3 : Cấu hình Minicom........................................................................................14
Hình 3.4 : Bootloader OMAP3530 EVM......................................................................15
Hình 3.5 : Chọn platform download toolchain từ CodeSourcery.................................17
Hình 3.6 : Hoàn tất cài đặt toolchain.............................................................................18
Hình 3.7 : Camera Creative...........................................................................................20
Hình 3.7 : Màn hình hiển thị sau khi chạy xong lệnh configure..................................23
Hình 3.8 : Kết quả sau khi chạy xong lệnh make install...............................................23
Hình 4.1 : Màn hình hiển thị sau khi configure............................................................26
Hình 4.1 : Mô hình codeword........................................................................................31
Hình 5.4 : Ảnh nhị phân cần tìm đường bao.................................................................36
Hình 5.5 : Một ảnh ví dụ áp dụng giải thuật tìm đường bao và được chia làm hai loại: đường

bao (countour) hoặc các lỗ (hole)............................................................................37
Hình 5.6: Cách thức quản lý các điểm nút....................................................................38
Hình 5.7 (a) Ảnh foreground (b) Mô phỏng các đường bao (đỏ) và các lỗ (xanh)......38

Trang 3 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
LỜI CẢM ƠN
Đầu tiên chúng tôi xin gửi lời cảm ơn chân thành đến Thầy Nguyễn Hòa Hưng, giáo
viên hướng dẫn, người đã tận tình hướng dẫn tôi thực hiện đề tài này. Thầy đã tận tình động
viên, giúp đỡ chúng tôi trong những lúc khó khăn, những lúc bế tắc khi thực hiện. Đó là
nguồn động viên rất lớn giúp chúng tôi có thể hoàn thành đề tài này.
Bên cạnh đó, chúng tôi xin chân thành cảm ơn Khoa, Bộ môn Kỹ Thuật Máy Tính, đặc
biệt là Câu Lạc Bộ Phần Cứng đã hỗ trợ kiến thức, hỗ trợ thiết bị giúp chúng tôi hoàn thành
đề tài này
Thành Phố Hồ Chí Minh, tháng 06 năm 2011

Trang 4 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
2

Chương 1 : Giới thiệu đề tài

2.1 Yêu cầu đề tài
Thiết kế và hiện thực hệ thống đếm xe sử dụng board nhúng thông qua camera kết nối
usb. Sử dụng Embedded Linux như hệ điều hành chính trên board mạch.
2.2 Phân tích đề tài

Đề tài “Thiết kế và hiện thực hệ thống đếm xe sử dụng board nhúng” là một phức hợp
nhiều thành phần của các module nhỏ với chức năng và hoạt động riêng biệt. Sau khi phân
tích dựa trên thực lực và nhu cầu hiện tại của xã hội, chúng tôi chia đề tài này thành các
phần sau đây
• Module 1 : Hệ thống gồm camera kết nối với board nhúng có chức năng nhận diện
và đếm xe.
• Module 2 : Các máy trạm trung chuyển thông tin từ board nhúng sau khi đã đếm số
lượng phương tiện
• Module 3 : Máy chủ trung tâm xử lý số liệu, kết hợp đưa ra giải pháp
Tuy nhiên, để thực hiện được thành công cả hệ thống thì module đầu tiên cũng là
module quan trọng nhất. Nếu không thành công từ module 1 thì các module còn lại cũng
không thế vận hành.
Vì tính chất quan trọng, ở phần trình bày tiếp theo chúng tôi sẽ tập trung vào phát triển
và đưa ra các giải pháp cho module 1 “Hệ thống gồm camera kết nối với board nhúng có
chức năng nhận diện và đếm xe”
2.3 Thiết kế ý niệm
Sau quá trình nghiên cứu và phân tích yêu cầu đề tài, chúng tôi quyết định chia đề tài thành
hai vấn đề chính : Tìm hiểu giải thuật và hiện thực trên board nhúng.
 Trong phần tìm hiểu giải thuật ta cần giải quyết các vấn đề sau :
 Tìm hiểu về thư viện OpenCV
 Sử dụng các hàm trong thư viện hỗ trợ cho đề tài
 Kết hợp với công cụ toolchain của board nhúng, cross compiler xuống board để
hiện thực giải thuật.
Trang 5 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
 Trong phần hiện thực trên board nhúng ta cần giải quyết các vấn đề sau :
 Nghiên cứu và có thể nạp được hệ điều hành Linux xuống board
 Kết hợp camera và board

 Xây dựng công cụ cross compiler để có thể sử dụng thư viện OpenCV trên board.

3 Chương 2 : Động lực và mục tiêu của đề tài
3.1 Động lực
Từ sau khi ra đời năm 1960, các hệ thống nhúng ngày này càng khẳng định được vai trò
quan trọng vượt trội của mình trong tất cả các lĩnh vực đời sống hiện tại.
Hệ thống nhúng (Embedded System) được định nghĩa như một hệ thống chuyên dụng,
có khả năng tự hành và được thiết kế thích hợp vào một hệ thống lớn hơn để hiện thực một
chức năng chuyên biệt nào đó.
Khác với các máy tính đa chức năng (multi-purposes computer), ví dụ như máy ví tính
cá nhân (PC), một hệ thống nhúng thường chỉ thực hiện một hoặc vài chức năng nhất định.
Hệ thống nhúng bao gồn cả thiết bị phần cứng và phần mềm, hầu hết đều phải thỏa mãn yêu
cầu hoạt động theo thời gian thực (real-time).
Tùy theo tính chất và yêu cầu, mức độ đáp ứng của hệ thống có thể phải là rất nhanh (ví
dụ như hệ thống thắng trong xe hơi hoặc điều khiển thiết bị nhà máy), hoặc có thể chấp
nhận một mức độ chậm trễ tương đối (ví dụ như điện thoại di động, máy lạnh, tivi…)
Để có thể dễ hình dung, ta xem ví dụ sau đây : một chiếc xe hơi trung bình có khoảng
70 đến 80 chip vi xử lý (micro controller unit), một bộ vi xử lý đảm nhiệm một nhiệm vụ
như đóng mở cửa, điều khiển đèn tín hiện, đo nhiệt độ trong và ngoài xe, điều khiển cần gạt
nước….
Mỗi bộ phận như thế là một hệ thống nhúng, tất cả được thiết kế thích hợp vào một
thống chung lớn hơn là chiếc xe hơi. Một ví dụ khác gần gũi hơn với cuộc sống hàng ngày
đó là chiếc điện thoại di động. Các chức năng như máy nghe nhạc, nghe radio, chụp hình, hệ
thống định vị toàn cầu (GPS)….tất cả đều là những hệ thống nhúng được tích hợp chung
vào chiếc điện thoại.
Hệ thống nhúng vốn rất đa dạng và phong phú, tuy nhiên có rất ít người biết tầm quan
trọng và sự hiện hữu của chúng trong thế giới quanh ta. Từ những hệ thống phức tạp như
hàng không vũ trụ, phòng thủ quân sự đến những phương tiện di chuyển thông thường như
Trang 6 |



Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
máy bay, xe điện, xe hơi, các trang thiết bị y tết trong bệnh viện…đâu đâu cũng có sự xuất
hiện của hệ thống nhúng
Trong hơn chin (09) tỷ bộ vi xử lý được sản suất hàng năm, chỉ có khoảng 150 triệu bộ
(1,5%) được sử dụng cho máy tính cá nhân, phần còn lại (98,5%) là dành cho hệ thống
nhúng.
Theo một thống kê khác của BBC Research Group thì đến năm 2009, tổng doanh số
của thị trường hệ thống nhúng trên toàn cầu sẽ đạt khoảng 88 tỷ USD, với phần cứng chiếm
78 tỷ USD và phần mềm chiếm 3,5 tỷ USD, phần còn lại là các board mạch nhúng. Tốc độ
tang trưởng trung bình hàng năm của phần mềm nhúng đang đạt mức 16%
Theo các chuyên gia, đến năm 2010 doanh số thị trường phần mềm nhúng toàn cầu ước
đạt 6 tỷ USD. Điều dự báo nói trên cùng với sự xuất hiện của ngày càng nhiều các đối tác
lới trong lĩnh vực này tại Việt Nam đã mở ra hương đi mới cho thị trường ngành phần mềm
nhúng của chúng ta trong tương lai.
Ngày nay, khi mà phần mềm nhúng đang trở nên phức tạp hơn thì việc phát triển các
sản phẩm của phần mềm nhúng đơn lẻ trở nên không còn phù hợp. Để hiện thực được
những ứng dụng nhúng phức tạp như vậy phần cần đến các hệ điều hành nhúng nhỏ gọn có
khả năng hỗ trợ tốt cho việc phát triển các phần mềm nhúng. Các hệ điều hành dung trong
các hệ thống nhúng nổi bật hiện nay bao gồm Embedded Linux, QNX, uITRON, VxWorks,
Windows CE, Symbian… Với nhiều lợi thế, Embedded Linux hiện nay đang phát triển rất
mạnh mẽ trên thế giới và chiếm vị trí số một trong các hệ điều hành nhúng. Ưu điểm vượt
trội của Embedded Linux so với các hệ điều hành khác là không đòi hỏi chi phí bản quyền,
cung cấp một kernel ổn định, hỗ trợ không giới hạn, có khả năng sửa đổi và tái xây dựng mã
nguồn. Theo nghiên cứu của Venture Development Corp. 18% kỹ sư về nhúng sử dụng
Embedded Linux là hệ điều hành chính trong các ứng dụng nhúng của mình.
Đi theo xu hướng chung của thế giới, ở Việt Nam hiện nay việc phát triển các hệ thống
nhúng có sử dụng hệ điều hành nhúng đang là xu hướng rất mới, tuy chưa có nhiều sản
phẩm nhúng được ứng dụng vào thực tế nhưng đây sẽ là hướng đi hứa hẹn đưa nên công
nghiệp của Việt Nam lên một tầm cao mới, bắt kịp với các quốc gia tiên tiến khác trên thế

giới.
Hiện nay dân số Việt Nam đang tăng trưởng với mức độ nhanh, đặc biệt là dân số trẻ.
Hơn nữa với mật độ dân số phân phố không đồng đều, tập trung chủ yếu ở khu vực thành
Trang 7 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
thị nên dẫn đến các thành phố lớn luôn là nơi tập trung dân cư đông đúc. Kéo theo sự phân
bố không đồng đều đó là nhiều vấn đề phát sinh cần được giải quyết như điện đường trường
trạm, trong đó nổi bật và nhức nhối nhất luôn là vấn đề về giao thông.
Với cơ sở hạ tầng giao thông được xây dựng cách đây hơn thập kỷ nhưng với sự gia
tăng không ngừng của dân số thì cơ sở hạ tầng giao thông vẫn không kịp đáp ứng được mức
gia tăng đó. Kẹt xe, đường xá xuống cấp, số lượng xe cộ tăng lên nhanh chóng luôn là
những câu hỏi lớn cho đội ngũ quản lý và điều hành đô thị.
Với những lý do trên đã thôi thúc chúng tôi thực hiện đề tài “Xây dựng Ứng dụng Hệ
thống đếm xe trên board nhúng” để đưa ra những ý tưởng ứng dụng công nghệ thông tin
vào giải quyết vấn đề của xã hội mà tiêu biểu là vấn đề giao thông đô thị. Mặt khác, chúng
tôi cũng mong muốn ý tưởng trên sẽ là một sản phẩm có tính thực tiễn cao, góp phần đẩy
mạnh xu hướng lập trình nhúng của Việt Nam trong tương lai.
3.2 Mục tiêu của đề tài
3.2.1 Mục tiêu chung của đề tài:
Mục tiêu chung của đề tài là hiện thực một công cụ gồm board nhúng, camera kết nối
với board có khả năng đếm xe. Công cụ này sẽ được đặt ngoài trời, tại những giao lộ hoặc
các cung đường cần khảo sát mật độ lưu lượng xe lưu thông. Kết quả đếm sẽ hiển thị lên
màn hình LCD kèm trên board hoặc có thể lưu vào một tập tin output sau mỗi lần đếm.
3.2.2 Mục tiêu riêng từng giai đoạn:
Quá trình hiện thực đề tài của chúng tôi sẽ trải qua 3 giai đoạn sau :
 Giai đoạn 1: Nghiên cứu và hoàn thành giải thuật hiện thực thành công trên máy tính.
Giai đoạn này đã được hoàn thành bởi anh Nguyễn Lừng Danh và chị Nguyễn Thị
Ngọc Anh.

 Giai đoạn 2: Ở giai đoạn này chúng tôi sẽ tập trung giải quyết các vấn đề sau :
 Về hệ điều hành Embedded Linux trên board OMAP 3530 EVM
 Về board OMAP 3530 EVM của Texas Instruments
 Về cross compiler
 Về các loại toolchain
 Nghiên cứu và tối ưu hóa các giải thuật xử lý ảnh dựa trên kết quả từ giai đoạn 1.
Trang 8 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
 Giai đoạn 3: ở giai đoạn này chúng tôi sẽ giải quyết các vấn đề sau :
 Hoàn thiện đưa ra giải pháp tốt nhất cho cross compiler
 Lựa chọn toolchain phù hợp
 Hiện thực demo với board OMAP 3530 EVM
 Tối ưu giải thuật sau khi hiện thực trên board
 Các chức năng phụ khác.
4

Chương 3 : Cơ sở lý thuyết và các công cụ

4.1 Hệ điều hành Embedded Linux
Hiện nay, Embedded Linux có nhiều phiên bản khác nhau, từ phiên bản tự xây dựng
(DIY version) cho đến các phiên bản thương mại độc lập như MontaVista, WindRiver…Số
lượng công ty sử dụng các phiên bản của Embedded Linux vẫn tiếp tục tang nhanh. Các
hang lớn như Motorola, NEC, Panasonic đã áp dụng thành công phiên bản MontaVista
Linux trên hàng triệu sản phẩm điện thoại di động, hang Yamaha chọn OS để xây dựng xảm
phẩm MOTIF XS (bộ tổng hợp âm thanh) hiện đang được sử dụng bởi các nhạc sĩ và ca sĩ
nổi tiếng.Sự sang tạo là không có điểm dừng. Các nhà thiết kế đã sử dụng Embedded Linux
tạo ra những sản phẩm vượt ngoài mong đợi như đồ chơi, người máy công nghiệp, vệ tinh
địa tĩnh, máy đọc sánh…

Năm 2008, một nhà máy sản xuất TV màn hình tinh thể lỏng (LCD) nhãn hiệu Bravia
của hãng điện tử nổi tiếng Sony tăng gấp đôi từ 2 triệu sản phẩm/năm lên 4 triệu sản
phẩm/năm để đáp ứng nhu cầu thị trường tăng cao từ Châu Âu. Sony đã thành công với
Bravia khi bán được hơn 20 triệu sản phẩm, điều đặc biệt là phần mềm hệ thống (firmware)
của chiếc TV Bravia này được xây dựng trên nền tảng của Embedded Linux.
Theo điều tra của hãng Embedded Systems Design trong năm 2007 có 21% trong tổng
số các nhà phát triển sử dụng Embedded Linux là hệ điều hành chính trên thiết bị của họ.
Và trong năm 2008 thì con số tăng lên là 36,7% theo nghiên cứu của Embedded Market
Forecasters.
Với nhiều ưu điểm vượt trội của mình so với hệ điều hành nhúng khác, Embedded
Linux ngày càng khẳng định vai trò dần đầu của mình trong lĩnh vực lập trình hệ thống
nhúng.Ưu điểm lớn nhất của Embedded Linux so với các hệ điều hành khác là việc không
đòi hỏi chi phí bản quyền và mã nguồn mở (open source), điều này cho phép người thiết kế
Trang 9 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
can thiệp sâu hơn vào các dịch vụ và module mà hệ điều hành cung cấp. Người thiết kế có
thể hiểu rõ hơn về những hàm mà họ gọi và thậm chí có thể thay đổi, tối ưu các hàm này
cho thiết bị mình sử dụng. Người thiết kế còn có thể dựa vào các module driver có sẵn để
tham khảo cho các driver của thiết bị mà họ sắp viết.
Có một đặc điểm quan trọng khác của Embedded Linux chính là tiêu chuẩn về chất
lượng mã nguồn (source code) cao.Một hệ thống dùng Linux thường rất ổn định và có tỉ lệ
lỗi thấp. Trước khi được đưa vào kernel source tree, một source code đã được test rất nhiều
trong cộng đồng phát triển.Embedded Linux là một hệ điều hành được hỗ trợ rất tốt, dễ
dàng có được patch và các bản cập nhật cho Linux hơn bất kỳ hệ điều hành khác. Thậm chí
khi có lỗi xảy ra cũng sẽ có patch thay thế trong một thời gian ngắn. Hơn thế nữa, driver
cho Linux thường có sẵn chỉ trong một vài tuần sau khi một sản phẩm phần cứng mới được
giới thiệu trên thị trường.
Với tất cả những đặc điểm trên cho ta thấy được tính năng và mức độ hiệu quả của một

hệ thống nhúng sử dụng hệ điều hành Embedded Linux. Những ưu điểm vượt trội đó làm
cho xu hướng phát triển cả Embedded Linux ngày càng trở nên quan trọng và mạnh mẽ hơn
trong lĩnh vực hệ thống nhúng. Ngày càng có nhiều công ty, kỹ sư chọn Linux là hệ điều
hành chính trên các thiết bị của mình.

Trang 10 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
4.2 Board OMAP 3530 EVM
4.2.1 Giới thiệu tổng quan

Hình 3.1 Board OMAP 3530 EVM Texas Instruments

Hiện nay trên thị trường thiết bị phát triển hệ thống nhúng có khá nhiều sự lựa chọn cho
các nhà phát triển cũng như kỹ sư thiết kế. Mỗi thiết bị đều được sản suất với những mục
đích chuyên dụng cho những tác vụ khác nhau.
Thị trường gia công thiết bị nhúng cũng rất đa dạng với các nhà sản xuất khắp toàn cầu
như Texas Instruments (Mỹ), ARM (Mỹ), Intel (Mỹ), Atelra (Mỹ), Renesas (Nhật)…đưa
đến cho người dùng những sự trải nghiệm khác nhau trên mỗi thiết bị.Trong các nhà sản
xuất đó Texas Instruments (TI) được biết đến như một nhà sản xuất lâu đời và có uy tín trên
thị trường thiết bị nhúng. Sản phẩm của TI được sử dụng trong nhiều lĩnh vực với độ bền và
tính đáp ứng nhanh. Bên cạnh đó các thiết bị của TI có khả năng chịu đựng thời tiết khắc
nghiệt và khả năng làm việc liên tục mà không gây lỗi.

Trang 11 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
Board OMAP 3530 EVM là một sản phẩm đặc trưng của TI được thiết kế với nhiều

công cụ phục vụ cho các tác vụ đa phương tiện, hỗ trợ tốt các chuẩn kết nối. Bên cạnh đó,
với những cổng mở, TI cho phép kết nối them những module phụ nhằm hỗ trợ tốt hơn cho
các công việc khác.
Với những lý do trên, chúng tôi đã quyết định chọn board OMAP 3530 EVM của Texas
Instruments làm thiết bị chính để hiện thực đề tài này.
4.2.2 Cấu trúc và thông số kỹ thuật

Hình 3.2 : Chi tiết phần cứng trên board OMAP3530 EVM

Board OMAP3530 EVM dựa trên nền tảng ARM 8 sử dụng vi xử lý ARM Contex A8
có thể chạy với xung clock tối đa lên 600 MHz. Board được sản xuất hướng đến người dùng
phát triển ứng dụng, điều khiển các thiết bị công nghiệp, phát triển các thiết bị di động và
các thiết bị có chức năng đa phương tiện (multi media functions)
OMAP3530 EVM là một trong những board phát triển hệ thống ARM 8 thực tế với giá
thành thấp (168 đô-la Mỹ bao gồm màn hình cảm ứng LCD), được đánh giá với hiệu suất
Trang 12 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
cao, phù hợp cho công việc học tập, nghiên cứu các hệ điều hành nhúng như Embedded
Linux và WinCE như hiện nay.Với việc sử dụng vi xử lý ARM A8 Cortex lừng danh được
sử dụng cho các dòng điện thoại nổi tiếng như iPhone 4, HTC HD hay Motorola đủ đáp ứng
các tác vụ đồ họa mạnh mẽ và ổn định, cách layout chuyên nghiệp và các chip ngoại vi chất
lượng, OMAP 3530 EVM thật sự là một hệ thống ARM 8 mạnh mẽ nhất hiện nay.
Cấu hình chi tiết của board
Processor
Ram
Flash Storage
LCD Interface


ARM Cortex A8 (600MHz – 1GHz)
512Mbytes DDR2 SDRam
256Mbytes
3.7" VGA/QVGA touch screen LCD display supporting

USB
Interface Resource

landscape/portrait modes
Hi-Speed 2.0 (OTG)
- 10/100Mbps Ethernet, SDIO, I2C, JTAG, Keypad
-

S-Video/Component/Composite input via TVP5146, SVideo output

-

Storage, Macro SD card

Bên cạnh cấu hình mạnh mẽ với nhiều chip ngoại vi hỗ trợ cho các tác vụ đa phương
tiện thì board OMAP 3530 EVM còn có thêm DSP Core hỗ trợ đắc lực cho các tác vụ cần
nguồn tài nguyên nhiều và xử lý nhanh.
Cấu hình chi tiết của Core DSP như sau
Processor
RAM

520 MHz TMS320C64x+™ DSP Core
- 32kb L1 program ram/cache (direct mapped)
-


80kb L1 data ram/cache (2 way set associative)

-

64kb L2 Unified Mapped ram/cache ( 4 way set
associative)

-

32kb L2 Shared SRAM and 16kb L2 ROM

Trang 13 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
4.2.3 Hướng dẫn cài đặt
4.2.3.1 Cài đặt chương trình giao tiếp với board
Để có thể chạy minicom như một user bình thường, ta phải bảo đảm user nằm trong
group được phép tạo file lock trong /var/lock, và thông thường đó là group “uucp” hoặc
“dialup”.
Tiến hành cài đặt cấu hình cho minicom, ta chạy chương trình minicom dưới quyền
root:
$sudo apt-get install minicom
$minicom –c on –s

Dòng lệnh

cho phép hiển thị màu(-c) và khởi động chương trình cài đặt(-s). Sau đó ta chọn Serial port
setup và sẽ hiện ra bảng hiệu chỉnh như hình sau


Hình 3.3 : Cấu hình Minicom

Cấu hình port serial và các tham số: “Serial port setup” -> “A” với “Serial device”
(/dev/ttyS0 hoặc /dev/ttyS1) và “E” cho “Bps/Par/Bits” là 115200 8N1 theo mặc định. Sau
khi hoàn thành cài đặt ta có thể lưu cấu hình theo mặc định hoặc tại một vị trí khác.
Bây giờ ta có thể khởi động minicom như một user bình thường
Kết nối board với máy tính thông qua cáp serial tại cổng UART1/2. Boot board và khi trên
terminal xuất hiện như hình thì kết nối đã thành công.
Trang 14 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM

Hình 3.4 : Bootloader OMAP3530 EVM

4.2.3.2 Cài đặt phần mềm OMAP35XXDVEVM
Chuẩn bị cài đặt:
- Tạo folder /temp để chứa các file cài đặt sau
• AM35x-OMAP35x-PSP-SDK-##.##.##.##.tgz
• Dvsdk_#_##_##_##_Setup.bin
• Cs1omap3530_setupLinux_1_01_00-prebuilt-dvsdk#.##.##.##.bin
• Bios_setuplinux_#_##_##_##.bin
• Ti_cgt_c6000_#.#.##_setup_linux_x86.bin
• Xdc_setuplinux_#_##_##.bin
- Với các dấu # là phiên bản của phần mềm cài đặt. Các phiên bản mới nhất có thể
được download tại trang web của Texas Instrument :
- Để đảm bảo các file .bin có thể thực thi được, ta thay đổi quyền trên chúng:

$cchmod +x *.bin
Trang 15 |



Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM

- Tiến hành cài đặt:
• Di chuyển đến thư mục temp host$ cd /temp
• Tiến hành giải nén file AM35x-OMAP35x-PSP-SDK-##.##.##.##.tgz và copy
thư mục giải nén vào thư mục /home/[user]
• Tiến hành chạy các file .bin
• Sau đó bộ cài đặt sẽ khởi động chương trình GUI (Graphic User Interface). Làm
theo hướng dẫn trong hộp thoại. Ta sẽ chọn thư mục cài đặt theo đường dẫn
sau /home/[user]/AM35x-OMAP35x-PSP-SDK-##.##.##.##/ cho các phần mềm
trên.
• Ví dụ cài đặt DVSDK
 Chạy file .bin host$./Dvsdk_#_##_##_##_Setup.bin
 Khi được hỏi về thư mục cài đặt, ta chọn /home/[user]/ AM35xOMAP35x-PSP-SDK-##.##.##.##
 Chọn kiểu Typical cho việc cài đặt.
 Cài đặt XDC Tools
 Chạy file .bin host$./ Xdc_setuplinux_#_##_##.bin
 Khi được hỏi về thư mục cài đặt, ta chọn thư mục dvsdk trong
/home/[user]/ AM35x-OMAP35x-PSP-SDK-##.##.##.## vừa được
cài đặt phía trên.
 Chọn kiểu Typical cho việc cài đặt
 Cài đặt các phần mềm còn lại tương tự như việc cài đặt XDC Tool.
 Lưu ý: khi cài đặt bộ công cụ sinh code (Code Generation Tool: file
Ti_cgt_c6000_#.#.##_setup_linux_x86.bin) ta cần phải xác lập biến môi
trường C6X_C_DIR như sau:

Ho$export
C6X_C_DIR=/home/[user]/dvsdk/cg6x_#_#_#/include:/home/

[user]/dvsdk/cg6x_#_#_#/lib

Trang 16 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
4.2.3.3 Cài đặt trình biên dịch và môi trường phát triển
Tiến hành download bộ toolchain LITE miễn phí trên mạng từ địa chỉ sau:
/>Chọn platform như hình

Hình 3.5 : Chọn platform download toolchain từ CodeSourcery
Để cài đặt bộ toolchain, ta tiến hành như đoạn script sau

$ $mkdir –p /home/[user]/toolchain
$ $cp arm-2008q1-126-arm-none-linux-gnueabi-i686-pclinux-gnu.tar.bz2 /home/[user]/toolchain
$$$cd /home/[user]/toolchain
$ $tar -jxvf arm-2008q1-126-arm-none-linux-gnueabi-i686pc-linux-gnu.tar.bz2
$ $rm arm-2008q1-126-arm-none-linux-gnueabi-i686-pclinux-gnu.tar.bz2

Thiết lập môi trường phát triển:

Trang 17 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
- Thêm thư mục /home/[user]/toolchain/arm-2009q1/bin vào đường dẫn bằng cách
thêm dòng sau vào file .bashrc

Ho$ sudo vim ~/.bashrc
PATH=”/home/[user]/toolchain/arm-2009q1/bin:$PATH”

- Lưu file .bashrc và thực hiện câu lệnh sau

$ source ~/.bashrc
- Tiến hành kiểm tra việc thiết lập biến môi trường bằng cách thực hiện câu lệnh sau

Ho$ arm-none-linux-gnueabi-gcc -v
- Khi trong terminal xuất hiện như hình thì việc cài đặt đã hoàn tất

Hình 3.6 : Hoàn tất cài đặt toolchain

3.2.3.1

Tiến hành giao tiếp với board thông qua ssh và cáp ethernet:

- Kết nối máy tính và board thông qua cáp Ethernet
- Thiết lập ip trên máy chủ
 Tạo một kết nối VPN mới với cấu hình được thiết lập như sau
 Name: OMAP (tùy chọn)
 IP: 192.168.1.2
 Netmask: 255.255.255.0
 Default gateway: 192.168.1.1
Trang 18 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
 Chọn kết nối OMAP
 Thiết lập ip trên board
 Tiến hành thiết lập môi trường theo đoạn script sau
 Boot board và dừng chế độ auto boot


OMOMAP3EVM # setenv ethaddr 00:50:c2:XX:XX:XX(kèm
theoboard)
OMOMAP3EVM # setenv ipaddr 192.168.1.3
OMOMAP3EVM # setenv serverip 192.168.1.2
OMOMAP3EVM # setenv netmask 255.255.255.0
OMOMAP3EVM # setenv gatewayip 192.168.1.1
OMOMAP3EVM # nand unlock
OMOMAP3EVM # saveenv

 Tiến hành ping thử địa chỉ ip của máy chủ
 Kết nối thông qua ssh
 Tiến hành reboot board và để autoboot chạy chế độ autoboot
 Đợi khi board boot xong, tiến hành đăng nhập vào tài khoản root của board
trên máy chủ bằng terminal và đăng nhập với password là omap.
Ho$ ssh
’s password:
 Khi trên terminal xuất hiện root@omap3evm:~# thì đăng nhập thành công và tiến
hành quản lý, thực thi file trên board bằng terminal máy chủ.
4.2.3.4 Chương trình mẫu
Chương trình xuất ra Hello world
 Soạn thảo đoạn code sau và đặt tên là hello.c trong thư mục /home/[user]/code
#iinclude <stdio.h>
inint main() {
printf("Welcome to OMAP35x World!\n");
return 0;
}
}
 Tiến hành compile mã nguồn thành file thực thi
Trang 19 |



Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
Ho$ arm-none-linux-gnueabi-gcc hello.c –o hello

 Copy file thực thi sang board vào thử mục hello
Ho$ scp /home/[user]/code/hello
:/home/root/hello
 Tiến hành chạy file trên board
././hello

 Kết quả xuất ra “Hello world” trên màn hình terminal.
4.2.4 Camera

Hình 3.7 : Camera Creative
Với khả năng hỗ trợ cổng kết nối USB 2.0 thì board OMAP 3530 EVM có thể kết nối
với tất cả những loại camera thông thường đang bày bán trên thị trường. Tuy nhiên để đảm
bảo chất lượng và độ chính xác của board khi nhận diện và đếm xe nên nhóm chúng tôi đã
chọn Webcam Creative VF0520. Chi tiết phần cứng của camera như sau
Sensor

VGA 640x480 CMOS image sensor
Trang 20 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
Video Resolution
Picture Resolution
Frame Rate
Working Interface


Up to 800x600 pixels
Up to 1.3 MP
Up to 30fps at 800x600 pixels
Plug and Play, USB 2.0 hi-speed

4.3 Các phương pháp cross compile
4.3.1 Cross compile dùng OpenCV 2.2.0 và arm-none-linux-gnueabi
- Khi tiến hành cross compile thư viện OpenCV vào toolchain, ta tiến hành các bước
tương tự như việc cài đặt thư viện OpenCV trên PC và thay đổi một số biến môi
trường theo các bước như sau:
- Sau khi download OpenCV version 2.2.0, ta untar gói file đã download (download tại
link />
$ $tar xvfj OpenCV2.2.0.tar.bz2
$ $cd OpenCV2.2.0/

- Tạo một file omap3530.cmake có nội dung như sau:
seset(toolchain_dir /usr/local/CodeSourcery/Sourcery_G+
+_Lite)
seset(toolchain_bin_dir ${toolchain_dir}/bin)
ssset(toolchain_libc_dir ${toolchain_dir}/arm-nonelinux-gnueabi/libc)
seset(toolchain_inc_dir ${toolchain_libc_dir}/include)
seset(toolchain_lib_dir ${toolchain_libc_dir}/usr/lib)
seset(CMAKE_SYSTEM_NAME Linux CACHE INTERNAL "system
name")
seset(CMAKE_SYSTEM_PROCESSOR arm CACHE INTERNAL
"processor")
seset(CMAKE_C_COMPILER ${toolchain_bin_dir}/arm-nonelinux-gnueabi-gcc)
seset(CMAKE_CXX_COMPILER ${toolchain_bin_dir}/arm-nonelinux-gnueabi-g++)
seset(CMAKE_C_FLAGS "-isystem ${toolchain_inc_dir}"


Trang 21 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
- Lưu file và làm theo script sau để build và install OpenCV, đồng thời file
omap3530.cmake sẽ thực hiện việc cross compile OpenCV vào công cụ toolchain.
Thư viện OpenCV sẽ nằm trong thư mục /opt/OpenCV 2.2.0
$ $mkdir opencv.build
$ $cd opencv.build
$ $cmake –D CMAKE_BUILD_TYPE=RELEASE –D
CMAKE_INSTALL_PREFIX=/opt/opencv2.2 –D
CMAKE_TOOLCHAIN_FILE:PATH=/home/
[user]/OpenCV2.2.0/beagleboard.cmake –D
BUILD_EXAMPLES=OFF –D BUILD_NEW_PYTHON_SUPPORT=OFF –D
BUILD_PACKAGE=OFF –D BUILD_SHARED_LIBS=OFF –D
BUILD_TESTS=OFF –D WITH_1394=OFF –D WITH_FFMPEG=OFF –D
WITH_GSTREAMER=OFF –D WITH_GTK=OFF –D WITH_QT=OFF –D
WITH_V4L=OFF –D WITH_PYTHON=OFF /home/[user]/OpenCV2.2.0
$ $make –j2
$ $sudo make install
- Khi thực hiện compile với thư viện OpenCV, ta sử dụng cú pháp sau:
Gc$arm-none-linux-gnueabi-g++ `pkg-config --cflags --libs
opencv` mycode.c –o test

- Trong đó pkg-config sẽ được cấu hình đường dẫn như sau: tại thư mục chứa source
code, ta thay đổi biến môi trường PKG_CONFIG_PATH

$P$PKG_CONFIG_PATH=/opt/OpenCV2.2/lib/pkconfig$
{PKG_CONFIG_PATH}
$ $exports PKG_CONFIG_PATH


4.3.2 Cross compile dùng OpenCV 2.0.0 và arm-linux
Phương pháp cross compile này được tham khảo từ trang web giáo sư ZXWang từ đại
học Stanford mô tả phương pháp cross dựa trên các board của nền tảng ARM. Board
OMAP 3530 EVM với processor chính là ARM Cortex A8 nên chúng tôi sẽ thử áp dụng
phương pháp này. Tuy nhiên phiên bản OpenCV mà phương pháp này đang sử dụng là
OpenCV 2.0.0
Trang 22 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
-

Download OpenCV 2.0.0 tại
/>
-

Thêm đường dẫn vào file PATH bằng cách gõ dòng lệnh sau

$export PATH="~/crosstool/bin:$PATH"
-

Giải nén file OpenCV vừa download và chuyển vị trí thực hiện vào thư mục
OpenCV-2.0.0

-

Tại thư mục OpenCV gõ dòng lệnh sau

$./configure --host=arm-linux --without-gtk --withouthighgui --without-v4l --without-carbon --withoutquicktime --without-1394libs --without-ffmpeg

--without-python --without-swig --enable-static
--disable-shared --disable-apps CXX=arm-iwmmxt-linuxgnueabi-g++ CPPFLAGS=-I/usr/include
Ở đây dòng host=arm-linux sẽ là nền tảng mà board đang chạy. Sau khi thực hiện xong
dòng này, chương trình sẽ hiện kết quả như sau
Hình 3.7 : Màn hình hiển thị sau khi chạy xong lệnh configure
-

Trên dòng terminal gõ tiếp hai lệnh theo thứ tự như bên dưới

$make
$sudo make install
Kết quả hiển thị như hình dưới
Hình 3.8 : Kết quả sau khi chạy xong lệnh make install
Để kiểm tra kết quả của trình biên dịch, chúng tôi sẽ viết thử một chương trình mẫu sử
dụng các hàm của OpenCV.

Trang 23 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
//opencvtest.c
#include <cv.h>
#include <cxcore.h>
#include <sys/time.h>
#include <stdio.h>
int main(int argc,char *argv[]){
IplImage *pImg;
IplImage *pImg_gray;
pImg=cvCreateImage(cvSize(400,300),8,3);
pImg_gray=cvCreateImage(cvGetSize(pImg),pImg>depth,1);

cvCvtColor(pImg,pImg_gray,CV_RGB2GRAY);
//Convert GRB to gray
printf("cvCvtColor\n");
cvReleaseImage(&pImg);
cvReleaseImage(&pImg_gray);
return 0;
}
Để dịch được đoạn chương trình sau, tại dòng lệnh terminal ta sẽ gõ đoạn script sau
(giải sử file opencvtest.c đang đặt tại thư mục /home/opencvtest.c)
arm-angstrom-linux-gnueabi-g++ opencvtest.c -o
opencvtest -I/usr/local/include/opencv
/usr/local/lib/libhighgui.a
/usr/local/lib/libcvaux.a /usr/local/lib/libcv.a
/usr/local/lib/libcxcore.a /usr/local/lib/libpng.a
/usr/local/lib/libz.a -lpthread –ldl -lrt
4.4 Giới thiệu về OpenCV
4.4.1 Giới thiệu tổng quan
OpenCV có tên gọi đầy đủ là Open Source Computer Vision Library là thư viện hỗ trợ
các chức năng về thị giác cho máy tính. OpenCV được phát triển từ năm 1999 bởi tập đoàn
sản xuất chip vi xử lý lớn nhất thế giới Intel. OpenCV cung cấp hàng trăm lớp mã nguồn hỗ
trợ các hoạt động xử lý hình ảnh, các ứng dụng hình ảnh một cách nhanh chóng và hiệu quả.
Đồng thời OpenCV cũng hỗ trợ xử lý các tác vụ trong thời gian thực (real-time).
OpenCV được sử dụng rất nhiều trong hầu hết các lĩnh vực. OpenCV hỗ trợ hơn 500
hàm với các tác vụ có thể thực hiện như xử lý hình ảnh, camera an ninh, theo dấu, nhận
diện…
Trang 24 |


Thiết kế hệ thống đếm xe hơi dùng board OMAP3530 EVM
Phiên bản mới nhất của OpenCV là 2.2.0 với nhiều phiên bản dành cho các hệ điều

hành khác nhau như Windows, Linux, Android, iOS, MacOS, FreeBSD…
4.4.2 Hướng dẫn cài đặt OpenCV trên hệ điều hành Linux
Phiên bản mà chúng tôi đang sử dụng cho công cụ cross compiler là OpenCV-2.0.0 nên
chúng tôi sẽ ưu tiên hướng dẫn cách cài đặt cho phiên bản này. Các phiên bản mới hơn
(2.1.0 và 2.2.0) đều có cách cài đặt tương tự.
-

Bật terminal của Linux, gõ theo dòng lệnh dưới đây

d

$ sudo apt-get install build-essential libgtk2.0-dev
libavcodec-dev libavformat-dev libjpeg62-dev libtiff4dev cmake libswscale-dev libjasper-dev
sudo apt-get install build-essential libgtk2.0-dev
- Quay về thư mục gốc của terminal
-

Download OpenCV-2.0.0 bằng lệnh sau

$cd ~
$wget
/>encv-unix/2.0/OpenCV-2.0.0.tar.bz2/download
$tar -xvf OpenCV-2.0.0.tar.bz2
$cd OpenCV-2.0.0
-

Thực hiện configure để cài đặt OpenCV vào máy tính

./configure --prefix=/usr/local --enable-apps
--enable-shared --with-ffmpeg --with-gnu-ld --with-x

--without-quicktime CXXFLAGS=-fno-strict-aliasing
-

Sau khi chạy xong, trên màn hình terminal sẽ hiện ra menu như sau

Trang 25 |


×