Tổ chức phần cứng, kỹ thuật lấp trình gỡ rối các hệ DSP họ TMS 320C3X4X
Trang 1BỘ KHOA HỌC CÔNG NGHỆ CHƯƠNG TRÌNH NHÀ NƯỚC VỀ
NGHIÊN CUU KHOA HOC VA PHAT TRIEN CONG NGHE THONG TIN VA TRUYEN THONG
BAO CAO TONG KET KHKT BE TAI KC — 01.07
NGHIÊN GỨU PHÁT TRIEN VA UNG DUNG
CONG NGHỆ Mô PHONG TRONG KTXH VA ANQP
Trang 2BỘ KHOA HỌC CÔNG NGHỆ
CHUONG TRINH NHANUGC VE
NGHIÊN CỨU KHOA HOC VA PHAT TRIEN CONG NGHE THONG TIN VA TRUYEN THONG
BAO CAO TONG KẾT KHKT DE TA! KC — 01.07
NGHIEN CUU PHAT TRIEN VA UNG DUNG CONG NGHE MO PHONG TRONG KTXH VÀ AN(P
Trang 3BỘ KHOA HỌC CÔNG NGHỆ CHƯƠNG TRÌNH NHÀ NƯỚC VỀ
NGHIEN CUU KHOA HOC VA PHAT TRIEN CONG NGHE THONG TIN VA TRUYEN THONG
BAO CAO TONG KET KHKT DE TAI! KC — 01.07
NGHIEN CUU PHAT TRIEN VA UNG DUNG
CONG NGHE MO PHONG TRONG KTXH VA ANOP
© PGS TSKH NGUYỄN CÔNG ĐỊNH - Học viện KTQS
Cơ quan quản lý Đề tài
HÀ NỘI - 2003
Trang 4DANH SÁCH CÁC THÀNH VIÊN THỰC HIỆN ĐỀ TÀI KC - 01.07
GS.TSKH Nguyễn Đức Cương _ - Viện Tên lửa, TT KHKT&CNQS
TS Lâm Văn Điệt - Viện Tên lửa, TT KHKT&CNQS
TS Nguyễn Văn Chúc - Phân viện trưởng, Viện tên lửa
TS Phan Văn Chạy - Chuyên viên Viện tên lửa
TS Phạm Vũ Uy - PVI, Viện tên lửa
TS Ngô Trọng Mại - Phòng MHH-MP, Viện tên lửa
GS.TSKH Dương Ngọc Hải - Vién Co hoc, TT KHTN&CNQG
GS.TSKH Nguyễn Văn Điệp - Viện Cơ học, TP KHTN&CNQG
Th§ Nguyễn Duy Thiện - Viện Cơ học, TT KHTN&CNQG
KS Nguyễn Hồng Phan - Viện Cơ học, TT KHTN&CNQG
KS Hà Công Tú - Viện Cơ học, TT KHTN&CNQG
CN Nguyễn Tất Thắng - Viện Co hoc, TT KHTN&CNQG
CN Nguyén Thi Hang - Vién Co hoc, TT KHTN&CNQG
GS.TSKH Ngô Văn Lược - XNLD đâu khí Việt-Xô
TS Trần Lê Đông - XNLD dầu khí Việt-Xô
TS Trương Công Tài - XNLD đầu khí Việt-Xô
TS Phạm Quang Ngọc , - XNLD dầu khí Việt-Xô
TS Nguyễn Chu Chuyên - XNLD đầu khí Việt-Xô
KS Nguyễn Minh Toàn - XNLD dầu khí Việt-Xô
Trang 5KS Nguyễn Văn Út - XNLD dâu khí Việt-Xô
ThS Nguyễn Van Quang - Bộ môn Tên lửa, HV KTQS ThS Hàn Vũ Hải - Bộ môn Tên lửa, HV KTQS ThS Đoàn Thế Tuấn - Bộ môn Tên lửa, HV KTQS
ThS Nguyễn Thanh Hải
Th§ Nguyễn Trung Kiên
Th§ Trần Đức Toàn
ThS Cao Hữu Tình
KS Nguyễn Văn Trường
KS Nguyễn Đức Hải
KS Phan Tuấn Anh
CN Chu Văn Huyện
KS Nguyễn Sơn Dương
KS Bùi Tân Chinh
- Bộ môn Tên lửa, HV KTQS
- Bộ môn Tên lửa, HV KTQS
- Khoa Cơ khí, Học viện KTQS
- Khoa Cơ khí, Học viện KTQS
- Khoa Cơ khí, Học viện KTQS
- Khoa Cơ khí, Học viện KTQS
- Khoa Cơ khí, Học viện KTQS
- Khoa Cơ khí, Học viện KTQS
- Khoa Cơ khí, Học viện KTQS
- Khoa Cơ khí, Học viện KTQS
- Khoa Cơ khí, Học viện KTQS
- Khoa Cơ khí, Học viện KTQS
- Công ty Tin học Hài hoa
- Cong tac vien TT CNMP
- Cộng tác viên TT CNMP
Trang 6
HVKTQS TTCNMP
dWNOLL SÒLAH HVKTQS TTCNMP
HOC VIEN KY THUAT QUAN SU
Trung tam Cong nghé Mo phong
100 Hoàng Quốc Việt - Cầu Giấy - Hà Nội
Báo cáo tổng kết khoa học và kỹ thuật Đề tài:
TỔ CHỨC PHẦN CỨNG VÀ KỸ THUẬT LẬP TRÌNH,
GỠ RỒI CHO CÁC HỆ DSP HỌ TMS 320C3X/4X
Hà Nội, 12-2002
Bản quyên 2002 thuộc Trung tâm Công nghệ mô phỏng
Đơn xin sao chép toàn bộ hoặc từng phần tài liệu này phải gửi đến TTCNMP
trừ trường hợp sử dụng với mục đích nghiên cứn
Trang 7
HOC VIEN KY THUAT QUAN SỰ
Trung tâm Công nghệ Mô phỏng
100 Hoàng Quốc Việt - Cầu Giấy - Hà Nội
Báo cáo tổng kết khoa học và kỹ thuật Đề tài:
Trang 8TOM TAT
Để xây dựng một modul xử lý tín hiệu số trong các bài toán thực tế bằng on- chip DSP người thiết kế cần phải làm hai công việc chính sau:
Thiết kế phần cứng thiết bị
Cài đặt thuật toán và gỡ rối cho bộ xử lý trung tâm
Trong phạm vi để tài này chúng tôi sẽ tập trung vào việc làm chủ và khai thác môi trường phát triển phần mềm Code Composer cho lập trình gỡ rối các hệ
DSP họ TMS320C3X/C4X Với nhiệm vự như vậy, nội dung của tài liệu sẽ bao gồm
các phần sau:
Kỹ thuật lập trình với Code Composer: Phần này trình bày các thao tác
và kỹ năng lập trình trên môi trường phát triển phần mềm Code Composer cho các hệ DSP họ TMS320C3X/C4X, các đặc điểm về thuật toán cũng như cấu trúc một chương trình được xây dựng bằng ngôn ngữ ANSI C trong Code Composer va minh hoa bằng một chương trình điều khiển cụ
thể cho thiết bị Starter Kit TMS320VCC33
Kỹ thuật lập trình với thiết bị Emulator XDS510: Phần này trình bày
về đặc điểm, tổ chức phần cứng, thao tác cài đặt và thiết lập cấu hình
trong máy tính PC của thiết bị Emulator XDSSI10 - một công cụ mô phỏng được sử dụng nhiều trong việc thiết kế và gỡ rối các hệ DSP họ
TMS320Œ3X/C4X trên Code Composer, cách thức sử dụng phần mềm Code Composer với XDS51x Emulator để thiết lập truyền thông giữa bộ
mô phỏng với đối tượng và cách thức debug các lỗi của cơ cấu mô phỏng
Trang 9Mục lục
Lời nói đầu
Phần 1 Kỹ thuật lập trình với Code Compose
Chương | Lap trình căn bản trên Code Compose
§¡ Môi trường phát triển phần mềm Code Compose
§2 Các bước xây dựng chương trình trên Code Compose 2.1 Tạo một proJect
2.2 Biên dịch gỡ rối và nạp chương trình
§3 Thuật toán chung điều khiển, xử lý cho DSP họ C3X/C4x
3.1, Lưu đồ thuật toán
3.2 Cai dat thuật toán bằng ngôn ngữ ANSI C 3.3 Két hop ANSI C va Assembler để xây dựng chương
Chuong 2 Xay dung chuong trinh diéu khién Starter Kit eZdsp33
§1 Cấu trúc phần cứng và tổ chức bộ nhớ cha eZdsp33
1,1 Cấu trúc phần cứng của eZdsp33 1.2 Tổ chức bộ nhớ của eZdsp33
§2 Cai dat Device Driver và thiết lập cấu hình cho eZdsp33
§3 Xây dựng chương trình điều khiển eZdsp33
§4 Kiểm tra kết quả bằng các công cụ gỡi rối trên môi trường
Code Compose Phần 2 Kỹ thuật lập trình với thiết bị emulator XDS510
Chương I Tổ chức phần cứng và cài đặt Emulator XDS510 trên máy
§3 Các bước cài đặt XDS510 trên máy tính PC
Chương 2 Thiết kế hệ DSP với JTAG EMULATOR
Trang 10§1 Phương thức Bus và sơ đồ logic với cable JFAG 38
1.1 Thiết kế đầu nối Emulator cho hệ thống đối tượng 38
1.3 Sơ đồ logic của đầu cáp JTAG Emulator 40
1.4 Giản đồ thời gian tín hiệu của đầu cáp Emulator JTAG 3l 1.5 Tính toán thời gian mô phỏng 42
§2 Kết nối giữa Emulator và hệ thống đối tượng 44
2.2 Sử dụng xung Clock cho hệ thống đối tượng 45
2.3 Định hình cho nhiều bộ xử lý 46
§3 Nghiên cứu thiết kế mô phỏng 47
3.1 Sử dụng các bộ kết nối đường scan 47 3.2 Tính toán thời gian mô phòng 48 3.3 Sử dụng các chân mô phỏng ' 50
3.4 Thực hiện chẩn đoán ứng dụng 54
Chương 3 Sử dụng phần mềm Code Compose với XDS51xEmulator 56
1.1 Thông tin về cấu hình Board mạch 56
1.3 Gỡ rối nhiều bộ xử lý 60
1.4 Scan thông qua những thiết bị TTAG không gỡ rối 63
§2 Thiết lập truyền thông giữa phần cứng mô phỏng và đối 65
§3 Xử lý các lỗi của cơ cấu mô phỏng 67 3.1 Các lỗi của Emulation Reset 67
§4 Hướng dẫn sửa chữa và một số công cụ gỡ rối 71
Trang 114.1 Hướng dẫn sửa chữa
4.2 Các công cụ chẩn đoán gỡ rối khác
Kết luận
Tài liệu tham khảo
7] 73
Trang 12LỜI NÓI ĐẦU
Ngày nay, việc số hoá và xử lý tín hiệu số được ứng dụng rất nhiều trong các
bài toán thực tế trên nhiều lĩnh vực khác nhau Cùng với sự phát triển mạnh mẽ của
công nghệ số, xuất hiện một khái niệm về on-chip xử lý tín hiệu số (DSP) DSP là một on-chip tốc độ cao lập trình được và được sử dụng như một bộ xử lý trung tâm trong các modul xử lý tín hiệu số Có rất nhiều DSP của các hãng khác nhau được tung ra thị trường, nhưng nồi bật nhất phải kể đến hãng Texas Instruments (TI) với
họ DSP TMS320 Trong lịch sử phát triển không ngừng của mình thì sự ra đời của DSP họ TMS320C3X/C4X là một điểm mốc đánh dấu sự phát triển vượt bậc của DSP về khía cạnh kỹ thuật DSP TMS320C3X/C4X là các họ vi xử lý song song 32- bịt dấu phẩy động áp dụng công nghệ CMOS Chúng hoạt động với tốc độ vài chục MHz và có thể xử lý tới hàng chục triệu phép tính dấu phẩy động trên một giây (MFLOPS) Đi kèm với DSP họ TMS320C3X/C4X là một bộ công cụ mô phỏng
phát triển (Emulator) và phần mềm phát triển (Code Composer Studio) cho phép
người sử dụng dễ dàng thiết kế và gỡ rối cho các hệ DSP của mình
Với những ưu điểm nổi bật của mình, có thể khẳng định việc ứng dụng các DSP họ TMS320C3X/C4X vào các bài toán khoa học kỹ thuật hiện nay là một vấn
đề cần thiết Do đó nảy sinh một yêu cầu tất yếu đối với những người làm kỹ thuật là phải làm chủ được môi trường Code Composer Studio - một môi trường phát triển và
ĐỠ rối cho DSP ho TMS320C3X/C4X
Trong khuôn khổ tài liệu này đề tài sẽ trình bày về kỹ thuật lập trình, gỡ rối
với Code Composer cho các hệ DSP họ TMS320C3X/C4X
Trang 13Phan I
KY THUAT LAP TRINH VOI CODE COMPOSER
Vài nét vé DSP ho TMS320C3x/C4x
Các bộ xử lý tín hiệu số (DSP) TMS320C3x/C4x là các thiết bị sử dụng công
nghệ CMOS 32 bít đấu phẩy động của họ DSP đơn chíp TMS320 DSP họ ˆC3x/C4x
tích hợp cả hai hệ thống điều khiển và các hàm xử lý toán học chuyên dụng trong một hệ vi điều khiển Hệ tích hợp này cho phép thực hiện những quá trình xử lý với các dữ liệu động được dễ dàng và đạt tốc độ cao nhất Chúng có thể thực hiện tới 60
triệu thao tác dấu phẩy động trên một giây (MFLOPS) Hơn nữa, họ DSP này còn
đóng vai trò một on-chip xử lý song song mức cao, cho phép người sử dụng thực hiện tới 11 hoạt động (thao tác) trong một lệnh đơn
TMS320 là một họ DSP khá linh hoạt, hoạt động theo thời gian thực và có
một tập lệnh mềm dẻo Do vậy chúng được thiết kế chơ nhiều ứng dụng khác nhau
Có thể kể ra dưới đây một số ứng dụng điển hình của họ DSP TMS320:
Các ứng dụng cơ bản nhất: Bộ lọc số, bộ biến đối Fourier nhanh (FFT),
các máy phát tín hiệu chuẩn
Các ứng dụng xử lý ảnh và đồ hoạ: Chế tạo Robot Vision, xây dựng các
bộ biến đổi và nén dữ liệu ảnh, xây dựng bản đồ số động,
Các ứng dụng trong điều khiển: Điều khiển đĩa, điều khiển động cơ Servo, diéu khién Robot, điều khién máy in Laser,
Các ứng dụng trong kỹ thuật quân sự: Bảo mật đường truyền tin, xử lý tín hiệu Radar, xử lý và nhận dạng ảnh, dẫn Tên lửa,
Mặc dù các ứng dung cla DSP họ ˆC3x/C4x rất đa dạng và phong phú, song
có thể khái quát hoá các bước xây dựng một ứng dụng với DSP TMS320C3x/C4x
Trang 14- Bước 3: Cài đặt phần mém điều khiển và xử lý cho DSP để chúng hoạt
động và giải quyết các yêu cầu nhiệm vụ đã đề ra
Trong thực tế nhà sản xuất thường xây dựng DSP thành các họ theo nhóm ứng dụng cụ thể và vì thế các thiết kế về phần cứng cho một họ cơ bản là giống nhau Khi này để giải quyết một ứng dụng cụ thể trong nhóm ta cần phải cài đặt một phần mềm điều khiến cụ thể cho DSP Chính điều này tạo ra khả năng linh hoạt trong việc sử dụng cùng một cấu trúc phần cứng cho các ứng dụng khác nhau bằng
cách thay đổi phần mềm điều khiển hợp lý Từ các phân tích ở trên có thể khẳng
định: Bước xây dựng và cài đặt phần mềm điều khiển và xử lý cho DSP là một bước quan trọng và chiếm nhiều thời gian nhất khi làm việc với các chíp xử lý tín hiệu số
Để xây dựng phần mềm điều khiển cho DSP họ 'C3x/C4x có thể sử dụng nhiều ngôn ngữ khác nhau Tuy nhiên để khai thác hết các khả năng và thế mạnh của DSP, người lập trình cần sử dụng ngôn ngữ C hoặc Assembler - là hai ngôn ngữ lập trình cho tốc độ cao nhất và hiệu quả trong việc khai thác và xử lý mức thấp với phần cứng Dưới đây, chúng tôi xin trình bày cách xây dựng một chương trình điều
khiển DSP bằng ngôn ngữ C trên môi trường Code Composer và minh hoa bằng một
chương trình cụ thể được xây dựng cho DSP họ TMS320 VC33
Trang 15Chương 1 Lập trình cơ bản trên Code Composer
§1 Môi trường phát triển phản mềm Code Composer
Code Composer là một môi trường phát triển phản mềm được cung cấp bởi hãng Texas Instruments di kém với các DSP họ TÀIS320C3x/C4x cho phép người lập trình xây dựng, gỡ rối và cài đặt chương trình điều khiển cho DSP Phần mềm này yêu cầu một cấu hình tối thiểu như sau: Một máy tính cá nhân họ IBM cài hệ điều hành Win9X với bộ nhớ 32Mbytes RAM ổ cứng còn I00Mbytes trống CPU dòng Pentium va card man hình SVGA hiển thị được với độ phân giải 800x600 Trước khi sử dụng Code Composer Studio bạn cần kết nối phần mềm với board DSP cuả mình Để làm điều này ta sử dụng công cụ Setup CCStudio như hình 1.1
lỆ Codc Eoœposer Setup [.=I>i
Fie Eat View Hebe
ecgoeZ dsp30 [ Specturn Digtal |
cài đặt với máy tính thông qua các cổng vào ra để có thể nạp chương trình, chạy và
gỡ rối chương trình trên chip DSP của mình Để cài đặt một driver điều khiển cho
DSP có thể sử dụng dòng lệnh Install a Device Driver ở cột thứ ba hoặc lựa chon menu Edit >> Install Driver Khi này xuất hiện một hộp hội thoại như hình 1.2 cho phép người sử dụng lựa chọn đường dẫn và driver cần cài đặt (được cung cấp bởi nhà sản xuất và thường đi kèm với thiết bị với tên mở rộng là *.dvr)
Trang 16Khi đã cài đặt xong Device Driver cho DSP ở cột giữa của Setup CCStudio là
Available Board/Simulator Types sẽ hiển thị các kiểu board DSP phù hợp cho
phép người sử dụng lựa chọn và thiết lập cấu hình Khi này có thể dùng chuột nhấp chọn và rê sang cột thứ nhất (System Configuration) để thiết lập cấu hình cho board DSP Chỉ tiết hơn về việc cài đặt sẽ được trình bày trong phần lập trình với sfarter kit và emulafor hoặc có thể tham khảo trong help on line đi kèm công cụ
Select Device Driver File’
lỆ*JedgaeZdsp33 [ Spectrum Đigital /EPII_ 1 - C2 Code Composer- sample mak - [Sample}
File Edt View Project Debug Profler mien GEL Tools Window Help
Code Composer Studio có một giao diện và các chức năng gần gidng Visual
Studio Nó bao gồm một cây thư mục chứa project đang xây dựng, vùng làm việc
Hinh 1.3: Code Composer Studio
Compile active source file NUM
4
Trang 17
(soạn thảo mã nguồn) và các toolbar chtta các công cụ gỡ rối và lập trình như tạo project biên dịch, debug, nạp chương trình Sau đây chúng tôi xin trình bày cụ thể
VỀ các công cụ này
§2 Các bước xây dựng chương trình trên Code Composer
2.1 Tạo một proJect
Code Composer Studio cho phép người lập trình xây dựng chương trình của
mình bằng cả hai ngôn ngữ C hoặc Assembler Tuy nhiên, ngoại trừ khả năng lập trình song song trong Assembler (cho phép một số cặp lệnh nhất định được thực hiện trong một chu kỳ lệnh) thì người lập trình nên sử dụng ngôn ngữ C€ bởi tính hiệu quả và thuận tiện của nó Để tạo một project trong Code Composer ta lựa chọn menu Project >> New hoặc Project >> Open Khi này một hộp thoại xuất hiện cho phép người sử dụng tạo một proJect mới hoặc mở một project đã xây dựng trước đó với tên mở rộng là *.mak như minh hoa ở hình 1.4 và hình 1.5
Saxe New Pioject As
Save in: | z3 vị Em mỊ Al cl Emi
Trang 18
Files of ype: | * mak + Cancel
Hình 1.5: Hộp thoại mở mot project dd xdy dung Mot project co ban nha&t bao g6m ba file: library file source file va link command file Dé cai cac file nay vao project, tiv menu bar ta chon Project >> Add File To Project, khi nay xuat hién mot hop thoai cho phép người lập trình lựa chọn
thư mục và kiểu file muốn cài vào chương trình
Library File: Được cài vào proJect với tên mở rộng 1a *.lib Day 14 thu viện vào/ra chuẩn được xây dựng sắn và kết nối với chương trình Code Composer cung cấp một số tệp thư viện kiểu này cho họ ’C3x, ’C4x véi tên rts3x.lib và rts4x.lib Lưu ý rằng, cần phải cài đúng library file cho từng ho DSP cu thé (chang han rts30.lib cho ho C30, rts40.lib cho ho C40 ) nếu không khi biên dịch chương trình sẽ báo lỗi
Source File : Là thành phần chính của một project Có thể cài một source file đã có vào project hoặc tạo một source mới với tên mở rộng là *.c Tệp nguồn của để án được xây dựng theo ngôn ngữ ANSI C (C chuẩn) rất quen thuộc với mọi lập trình viên Tuy nhiên trong Code Composer thì việc lập trình có những nét đặc thù riêng, sẽ được trình bày cụ thể ở §3 Link Command File: Khi một để án đã được xây dựng và biên dịch thành công (không báo lỗi compiler), chúng sẽ được dịch sang dạng tệp nhị phân (với tên mở rộng là *.out) và nạp vào DSP Khi này cần tới link command file Cấu trúc một link command file có dạng như sau:
MEMORY
{
Trang 19VECTOR: org = 0xXXXXXX len = OXXX
RAM2_ :org=0xXXXXXX len=0xXX
RAM3 © : org = OXXXXXXX len = OxXNX
MMRS ©: org = OxXXXXXX len = OXXX
RAMO — : org = OxXXXXXX len = OXXX
RAMI — : org = OxXXXXXX len = OxXXX
}
SECTIONS
{
-vector > VECTORS /* Reset/Interupt vectors */
.CIMT: >RAMX /* Initialization tables */
.const: > RAMX /* Constants */
.stack: > RAMX /* System Stack */
.sysmem: > RAMX /* Dynamic Memory */
}
Link command file cé hai phan chinh Phần thứ nhất xác định các phân đoạn trang nhớ với địa chỉ (chỉ định bởi org) và độ đài (chỉ định bởi len)
cụ thể cho bảng vector, bus ngoại vi (MMRS) và các vùng nhớ RAM
Phần thứ hai tách chương trình thành các đoạn xác định như bảng vector
ngắt, phần mã, hằng số, stack, và chỉ định cho chúng vào các vùng bộ nhớ đã định nghĩa ở trên Nội dung của link command file phụ thuộc vào cấu trúc phần cứng của từng họ DSP cụ thể và yêu cầu người lập trình
phải có một hiểu biết khá vững về phần cứng của thiết bị cũng như việc
lập trình hệ thống Code Composer chỉ đưa ra một mẫu link command file chung và cho phép người lập trình thay đổi nội dung file này cho phù hợp
với từng họ DSP Có thể xem các tài liệu về cấu trúc phần cứng và tổ chức
bộ nhớ đi kèm các họ DSP cụ thể để có thông tin đẩy đủ và chính xác
trong khi xây dựng link command file
2.2 Biên dịch, gỡ rối và nạp chương trình
Trang 20Toàn bộ qúa trình xây dựng, biên dịch gỡ rối và nạp một chương trình cho DSP họ 'C3x 'C4x có thể được trình bày trong một lưu đồ sau:
trong Code Composer
xây dựng chương trình Để làm điều này trong Code Composer ta có thể sử dụng
menu bar và chọn Project >> Options Khi này xuất hiện một hộp thoại cho phép người lập trình lựa chọn các tuỳ chọn biên dịch như minh hoa sau
Trang 21Include Search Path |hic3s4xsc
J¥ Generate Symbolic Debug Infomation
Inline Cptions [intiinsic Operators Only ¥ Warming Level
Assembly : / TT Treat code-E Errors as Wamings
tìm hiểu chỉ tiết hơn về các tuỳ chọn biên dịch
Trong khi biên dịch, một cửa số sẽ xuất hiện trong windows main thông báo trạng thái của quá trình biên dịch và các thông báo lỗi nếu có Nếu quá trình biên dịch thành công sẽ có thông báo “Compiler Complete” và một file obJect được tạo
ra Khi nay co thé chon Project >> Build hodc Project >> Rebuild All để link các object thanh một file mã máy và nạp vào DSP
Có ba kiểu lỗi chính thường xuất hiện trong khi xây dựng, biên dịch và chạy chương trình Đó là lỗi biên dịch (Compiler Error), lỗi hợp dịch (Link Error) và lỗi chương trình khi nạp vào DSP Lỗi biên dịch thường xuất hiện khi có sai sót về mặt
cú pháp, câu lệnh và được thông báo chi tiết trong cửa số debug về kiểu lỗi và vị trí
Trang 22lỗi Lỗi hợp dịch thường xuất hiện khi người lập trình sử dụng sai các tuỳ chọn hợp
dịch như đặt đường dẫn tới các include file và library file sai chọn kiểu target
processor sai Khi này cần phải sửa lại lỗi cú pháp và xác định các tuỳ chọn biên dịch cho đúng Lỗi phức tạp và khó gỡ rối nhất chính là các lỗi chương trình khi nạp chúng vào DSP Nguyên nhân chính của các lỗi này là do xây dựng link command file không phù hợp với kiểu DSP hoặc các lỗi thuật toán trong mã nguồn Khi này cần phải sửa lại link command ñile hoặc sử dụng công cụ debug trong Code
Composer để gỡ rối chương trình
Có thể sử dụng menu bar và chon debug menu để lựa chọn các công cụ gỡ rối hoặc sử dụng các shortcut như liệt kê dưới đây:
% Step Into: Click vào shorcut button này để chạy chương trình theo từng bước
@ Step Over: Sử dụng lệnh này đề chạy chương trình theo từng bước
và kiểm tra sự thực hiện của một hàm hoặc chương trình con xác
định Khi gặp hàm này Code Composer sẽ tạo ra một điểm gãy (breakpoint) và dừng lại trước khi hàm được gọi
tp, Step Out: Nếu chương trình đang được thực hiện trong một
subroutine bạn có thể sử dụng shorcut button này để kết thúc hoạt
động của subroutine và đưa con trỏ trở về vị trí gọi nó
¬gị Run to Cursor: Thực hiện chạy chương trình tới vị trí con trỏ hiện
thời trong cửa sổ Dis-Assembly
ry Run: Cho chương trình hoạt động từ vị trí hiện thời của PC Hoạt
động sẽ được tiếp tục cho tới khi xuất hiện một điểm gãy
.q Halt: Tạm dừng sự hoạt động của chương trình
View CPU Registers Window: Shorcut button này cho phép người
Trang 23& View Dis-Assembly: Mở cửa số Dis-Assembly Cửa sổ này hiển thị các thông tin về vị trí và giá trị của tập lệnh đưới dạng tháo rời (dis-
assembly) trong bộ nhớ
Trên đây là một số công cụ gỡ rối hay được sử dụng nhất Chúng có những nét tương đối giống với bộ công cụ gỡ rối trong môi trường phát triển phần mềm Visual Studio, vốn đã khá quen thuộc với những người lập trình C Có thể tham khảo
trong Help để có những thông tin cụ thể hơn về các công cụ gỡ rối chương trình
cũng như ý nghĩa của chúng Trong mục này chúng tôi chỉ trình bày sâu hơn về một
số công cụ gỡ rối và kiểm tra chương trình rất hiệu quả và đặc trưng cho việc lập trình hệ thống với ĐSP trên môi trường Code Composer
re [- Jo]
04E00000 6A05FFEC BZ
&2809CEF CALL 6AQUFFEA BU
- Dis-Assembly: Xuat hién khi Code Composer dugc chay lần đầu hoặc có
thé goi tir menu bar va shortcut button Ctra s6 nay hién thị thông tin về vị
trí và giá trị tập lệnh chương trình dưới dạng tháo rời trong bộ nhớ Hình
1.8 mình hoạ một cửa số dis-assembly
- Memory Windows: Hién thi thông tin về giá trị bộ nhớ CPU dưới dạng
mã hexa Cửa sổ này rất hữu ích khi kiểm tra dung lượng bộ nhớ và các
lỗi tràn Hình I.9 minh hoạ một memory window Tại một thời điểm có
thể mở một hoặc nhiều memory window Mỗi cửa sổ này có một hộp thoại thuộc tính, xuất hiện khi gọi lần đầu hoặc mở từ menu pop-up, cho
phép người lập trình đặt tên cửa sổ, chọn địa chỉ bất đầu hiển thị, kiểu đữ
liệu, Hình 1.10 minh hoạ một hộp thoại thuộc tính của memory window
tt Memory (32-Bat Hex - C Style}
0xÐ0ñD0DD00: data ^ ñ£ÖDDDD990: DxzJDĐDDD4S5
DxzDDODDDD1: Ox00809FC1 ñxØöũñöD0ö02: OxG0809FC2 Gxoo0000003: OxO00809FC3 0xzDDDDDDD4: OxO00809FC4 4 öxz000090855: 0xÖÖBDSFCS
0:zODDDDDOS6: 0zD08Q9FEC6 OxGOG00007: OxCO809FC7 özØũDöD08: Ox00eo09FC8
Hinh 1.9: Memory Window
ll
Trang 24Memary Window fiptians :
Title:
QValue: ƒT———~——
Format: [š2EtHz-Cse >]
I~ Use IEEE Float
J Enable Reference Buffer
End Address:
Polis camel y 8E Cancel | Help
Hinh 1.11 minh hoa mot cira $6 CPU Register
Hinh 1.10: Memory Window Options
CPU Registers: Hién thi giá trị các thanh ghi của CPU trong quá trình
thực hiện chương trình Đây là một công cụ kiểm tra gỡ rối rất hiệu quả
View Graphically: Các chương trình xây dựng cho DSP là các chương
trình xử lý tín hiệu số theo thời gian thực Vì vậy cần có một cái nhìn trực
quan về kết quả nhận được theo thời gian Code Composer giải quyết điều này bằng cách cho phép người lập trình kiểm tra kết quả nhận được dưới
dạng Graphically Một trong những công cụ hay được sử dụng để debug theo phương thức này là các đồ thị thời gian/tần số, được lựa chọn từ menu bar View >> Graph >> Time/Frequency Khi nay xuất hiện một
đồ thị cho phép người lập trình quan sát kết quả (là tín hiệu số) trên miễn
Trang 25
thời gian hoặc miền tần số Hình !.!12 minh hoạ một cửa số kết qua chương trình dưới dạng đồ thị thời gian/tần số
DisplauTupe - Single Time øl|^
Graph Tithe Graphical Display Start address Waves quare Acquistion Bulfer Size 28 Index Increment 1 Display Data Size 200 ló
người lập trình lựa chọn các thuộc tính hiển thị của cửa sổ Hộp thoại này cho phép lựa chọn kiểu hiển thị (Display Type) là miền thời gian hoặc tần
số, địa chỉ bat đầu hiển thi (Start Address), kiéu dit ligu (DSP Data Type)
Có thể xem Help dé cé thong tin chi tiết hơn về các thuộc tính này
§3 Thuật toán chung điều khiển, xử lý cho DSP họ ’C3x/C4x
3.1 Lưu đồ thuật toán
Trang 26Với các họ DSP cụ thể và trong từng ứng dụng cụ thể thì thuật toán điều
khiển và xử lý sẽ khác nhau Tuy nhiên chúng đều tuân theo một lưu đồ chung thể hiện trên hình 1.14
3.2 Cài đặt thuật toán bằng ngôn ngit ANSIC
Như thuật toán 1.14 đã chỉ ra toàn bộ quá trình điều khiển và xử lý với DSP
ho ’C3xC4x 1A mot vong lap vô hạn, trong đó là các thao tác mức thấp với bus ngoại
vi như các thao tác vào-ra phục vụ ngất Trong Code Composer thuật toán này được
khai triển bằng ngôn ngữ ANSI C như sau:
ReadInput(); /* Đọc dữ liệu vào */
InteruptProc(); /* Phục vụ các yêu cầu ngắt */
vụ ngắt, thao tác vào-ra Điểu này đòi hỏi lập trình viên phải có một kiến thức nhất
định về lập trình hệ thống cũng như phần cứng thiết bị Code Composer là một trình biên dịch cho họ TMS320 C3x/C4x theo ngôn ngữ C chuẩn (ANSD Do vậy các hàm
vào-ra cũng như các thủ tục xử lý ngắt sử dụng trong chương trình là các hàm phổ
dụng quen thuộc và được trình bày khá chi tiết trong nhiều tài liệu về lập trình trên ngôn ngữ C Có thể tham khảo chỉ tiết hơn về TMS320 C3x/C4x C Language theo tài liệu đi kèm bộ Code Composer Studio
3.3 Kết hợp ANSI C va Assembler để xây dựng chương trình
Trong Code Composer, các bước xây dựng một executabie file (có tên mở
rộng là *.ouU) từ một source file (có tên mở rộng là *.c hoặc *.asm) được chỉ ra ở hình 1.15
14
Trang 27Text asm -obj out
Editor >} Assembler pp Linker _—>
Như hình 1.15 chỉ ra, khi xây dựng chương trình bằng ngôn ngữ C chúng ta
phải mất một bước biên dịch sang ngôn ngữ Assembler rồi mới chuyển thành các file object Do vậy tốc độ chương trình chậm hơn khi ta xây dựng trực tiếp từ ngôn
ngữ Assembler Hơn thế nữa, ngôn ngữ Assembler còn hỗ trợ khả năng lập trình
song song (đã trình bày ở phần trên) Do vậy khi xây dựng chương trình bằng ngôn ngữ này, sẽ cho lại một hiệu quả cao nhất Tuy nhiên, nhược điểm của ngôn ngữ Assembler là tập lệnh nhiều, rất khó xây dựng, cài đặt thuật toán và gỡ rối với những
chương trình lớn Một giải pháp được đặt ra để có thể tận dụng tối đa các ưu điểm là
xây dựng một chương trình bằng cách kết hợp cả hai ngôn ngữ Khi này, chương trình chính sẽ được xây dựng bằng ngôn ngữ C Các phần cần ưu tiên tốc độ xử lý hoặc thao tác thấp (như các hàm phục vụ yêu cầu ngắt cứng) sẽ được viết riêng bằng Assembler Sau đó chúng được biên dịch một cách độc lập với nhau thành các file obj va link vao một file khả chạy duy nhất Đây là một giải pháp thường được áp dụng trong các bài toán thực tế
Trên đây là toàn bộ quá trình xây dựng một project cũng như biên địch và nạp chương trình cho DSP họ ’C3x/C4x trên Code Composer Tiếp theo, chúng ta sẽ sử dụng các bước xây dựng chương trình đã trình bày ở trên để xây dựng một chương trình điều khiển và xử lý cụ thể cho starter kit eZdsp33
15
Trang 28Chương 2 Xây dựng chương trình điều khiển Starter Kit eZdsp33
On-chip eZdsp33 là một thiết bị phân tích tín hiệu số (Spectrum Digital) sử dụng DSP họ TMS320 VC33 Thiết bị này được nhà sản xuất thiết kế như một bộ xứ
lý hoạt động độc lập (stand-alone processor) với một đầu vào và một đầu ra analog
Do vậy người sử dụng không cần phải quan tâm tới thiết kế phần cứng cho on-chip này eZdsp33 có thể được sử dụng trong nhiều bài toán phức tạp liên quan tới phân tích và xử lý tín hiệu số Tuy nhiên ở đây, chúng tôi chỉ đưa ra một ví dụ đơn giản nhất với mục đích giới thiệu cách thức lập trình trên Code Composer cho DSP họ C3xC4x Chương trình sẽ thực hiện nhận tín hiệu từ đầu vào, khuếch đại chúng theo một hệ số đặt trước và gửi tín hiệu này tới bộ đệm ra
§1 Cấu trúc phần cứng và tổ chức bộ nhớ của eZdsp33
eZdsp33 được xây dựng trên một on-board với bộ vị xử lý họ TMS320 VC33 TMS320 VC33 là bộ xử lý dấu phẩy động 32 bit với tốc độ 60MHz, sản phẩm của công nghệ TimeLine Các ứng dụng của TMS320 VC33 được phát triển rất thuận tiện và rộng khắp do chúng có một cấu tạo với bộ xử lý đa nhiệm, một cổng giao điện mở rộng, hai bộ định thời và một kiến trúc ngất đa xử lý TMS320 VC33 có I giao tiếp JTAG vì vậy nó có thể thực hiện độc lập mà không cần thêm các công cụ phát triển khác TMS320 VC33 cho phép kiểm tra đầy đủ tốc độ của chương trình
viết cho nó Với 34K words bộ nhớ có sẵn và 1 vi mạch tích hợp giải mã và mã hóa Sigma-Delta TUC320AD50, modul này có khả năng giải quyết khá nhiều vấn để
trong lĩnh vực xử lý tín hiệu số TMS320 VC33 còn có 2 đầu nối mở rộng cho mục đích mở rộng chức năng khi cần thiết Trong môi trường phát triển và gỡ rối Code Composer Studio, người lập trình có thể xây dựng chương trình và gỡ rối cho eZdsp33 thông qua ghép nối JTAG logic, hoặc tùy chọn JTAG emulator
1.1 Cấu trúc phần cứng của eZdspVC33
Starter kit eZdsp33 xay dung dựa trên TMS320 VC33 trong một on-board với nguồn nuôi 5Volt, kết nối với máy tính thông qua cổng song song với địa chỉ 0x378 Hình 2.1 minh hoạ kiến trúc tổng quan của starter kit eZdsp33
16
Trang 298
a ea cenit IUWMlJNUITRUUUTTUU: ` —Í ïg Ƒ] |
Hình 2.1: Kiến trúc tổng quan của eZdsp33
eZ.dsp33 có các đặc điểm sau:
- CPU thực hiện với tốc độ 60Mhz/120 mips
- Bộ giải mã mã hóa Sigma-Delta TLC320AD50 duoc nối ra jack cắm
stereo cho vào ra tương tự
- C6 2 đầu nối (dữ liệu, địa chỉ, các đường điều khiển vào ra và cổng nối
Hình 2.2: Sơ đô khối chức năng của eZdspVC33
Dưới đây, chúng tôi xin trình bày sâu hơn về bộ biến déi Sigma-Delta
TLC320AD5O0 và các đầu nối mở rộng, là hai khối vào/ra chính của eZdsp33
Khối AD 50 gồm một đầu vào và một đầu ra Đầu vào tương tự là cặp tín hiệu
AC được nối ra jack JI Dải điện áp vào trên ADðO có biên độ là 3 vôn (peak to
17
Trang 30peak) với điện thế điểm giữa là 2.5 vôn Hình 2.3 minh hoạ dạng tín hiệu cho phép
ở đầu vào AD50
Hình 2.4: Các mức tín hiệu ra tương tự eZdsp33 có I kênh mở rộng bao gồm: l6 bít thấp của kênh dữ liệu, 20 bít
của kênh địa chỉ và các tín hiệu điều khiển lấy từ DSP Kênh mở rộng này cho phép người sử dụng thiết kế các mạch khác theo yêu cầu riêng của ứng dụng mà không cần phái thiết kế lại mạch DSP Kênh mở rộng này được nối ra 2 đầu nối, mỗi đầu nối có 2 hàng chân Các tín hiệu trên các chân cho mỗi đầu nối được mô tả trong
Trang 33trong eZdsp VC33 được minh hoạ trong hình 2.8 Việc xác định chính xác tổ chức
bộ nhớ của eZdsp VC33 sẽ giúp cho người lập trình xây dung được link command file phù hợp với chương trình
0x809EC0 (1K words-63 words trong)
Ox809FC1 Chương trình ngắt người dùng
§2 Cài đặt Device Driver và thiết lập cấu hình cho eZdsp VC33
Như đã trình bày ở các mục trên, chúng ía có thể sử dụng cong cu Setup
CCStudio dé cai dat driver diéu khién cho stater kit eZdsp33 Hang Texas
Instruments đã cung cấp sẵn một device driver có tên sdgoeZdsp33.dvr đi kèm với thiết bị và tự động cài trong quá trình cài đăt Code Composer Hãng cũng cung cấp
một file cấu hình thiết lập sẵn các cấu hình mặc định và phù hợp giúp người sử dụng
21
Trang 34Khi này chi viéc str dung lénh Import a Configuration File va lua chon cau hinh phù hợp trong hộp thoại (cổng 0x378) như mình hoạ ở hình 2.9
và To configure your sụstern, select from the list of standard configurations below
ae and click "Add to ayster configutation” (Lse “Filters to narrow the list of
we “Available Configurations" | Advanced users can browse for import files by
clicking “Advanced>>" below of manually configuting the systern by esiting this dialag and then adding boards/simulators to the system
Additional information about this configuration:
người sử dụng lựa chọn địa chỉ kết nối, kiểu và tên starter kít Có thể sử dụng menu
bar File >> Open hoặc File >> Save để mở một file cấu hình (*.cfg) đã lưu trước đó hoặc lưu lại một file cấu hình cho lần sử dụng sau
> Emu Name df hardware product:
© Data Log [EZDsPve ~]
l‡t EEE 240
tứ EEl 2080 Emulator port address: [G.37a
Emulator port mode:
faa]
Emulator port speed:
5 ait
aad TT” Inctude SD opto-isolator pod
1% Disable certain emulation polling
4 -Perforn C27x style Wait-In-Reset
For Help, press Ft : : INDMTT—
22
Trang 35Sau khi thiết lập cấu hình cho starter kit xong chúng ta có thể bát đầu xây
dựng chương trình điều khiển cho on-chip này
§3 Xây dựng chương trình điều khiển eZdsp VC 33
Bước I: Tạo một project mới với tên “vc33.mak” trong thư mục
CA Xnyproject Chọn menu Project >> Options để xác định các tuỳ chọn với target processor là C33 Cài file rts30.lib vào project (file này nằm trong thư mục C:Mic33x\c3xc4x\cptoolNib) Chọn menu File >> New để tạo hai file mới với tên “vc33.c” và “vc33.cmd” rồi cài vào proJect
Bước 2: Trong cửa sổ soạn thảo, nhập mã nguồn sau đây vào file vc33.c:
Trang 36/* Doc tin hiéu vào Š/
Trang 37VECTOR: org =0x809FCO len = 0x40 RAM2: org = 0x800000 len = 0x4000 RAM3: org = 0x804000 len = 0x4000 MMRS: org = 0x808000 len = 0x0100 RAMO: org = 0x809800 len = 0x400 RAMI: org = 0x809c00 len = 0x3CO
}
SECTIONS
{
-vectors > VECTOR text: > RAMI
.const: > RAMO stack: > RAMO sysmem: > RAMO bss: > RAMO
}
- Buéc 3: Chon menu Project >> Compiler File dé bién dịch chương trình, kiểm tra các lỗi cú pháp nếu có Nếu biên dịch thành công, lựa chọn menu Project >> Build để xây dựng file nhị phân với tên ve33.out Sau
đó chọn menu File >> Load Program để nạp chương trình vừa xây dựng
vào eZdsp VC33 và kiểm tra sự hoạt động của nó
§4 Kiểm tra bằng các công cụ gỡ rối trên môi trường Code Composer
Khi nạp chương trình vào eZdsp33, trên cửa số Dis-Assembly sẽ xuất hiện thông tin về giá trị và vị trí trong bộ nhớ của chương trình dưới dạng tháo rời Chúng
ta sẽ thấy rõ các hàm và chương trình chính được biên dịch như thế nào và thực hiện
ra sao Hình 2.11 chỉ ra.đoạn mã của hàm write_ bufferQ trong bộ nhớ
25
Trang 38
lff Dis-Assembi ñũ8ñs=zữs 6ãữñnñHñññ1
Hình 2.11: Cửa sổ Di-Assembly lệnh của chương trình
Để quan sát kết quả ta sử dụng menu bar View >> Graph >>
Time/Frequency Trong hộp thoại thuộc tinh, thay đối các tuỳ chọn sau (được minh hoa ở hình 2.12):
- Thay d6i Graph Tile tit gid tri mac dinh thanh Input
- Xdac định giá trị Start Address là inp_buffer (địa chỉ tương đối trỏ tới vùng
Acquistion Bulfer Size 128
Hinh 2.13: Input Display
Thao tác như vậy với Graph thứ hai với các lua chon: Graph Title 14 Output, Start Address 14 out_buffer ta sẽ được Output Display nhu hinh 2.14
26
Trang 39
} 1.1e+31 |
t 9 Í (| 118223 '
Ta nhận thấy rằng dữ liệu ra lớn gấp 2 lần dữ liệu vào (volume = 2) Điều này
chứng tỏ chương trình đã được thực hiện đúng đắn
Trên đây là toàn bộ quá trình xây dựng, gỡ rối và cài đặt một chương trình
điều khiển starter kít eZdsp33 trong môi trường Code Composer Từ chương trình đơn giản này, người lập trình có thể phát triển thành một chương trình phức tạp hơn
để ứng dụng eZ.dsp33 cho các bài toán thực tiễn
27
Trang 40Phan II
KY THUAT LAP TRINH VOI THIET BI EMULATOR XDS510
Chương! Tổ chức phan cting va cai dat Emulator XDS510 trén may tinh PC
§1 Một số định nghĩa và yêu cầu về phần cứng
Các khái niệm sau sẽ được dùng thường xuyên trong tài liệu này để tránh sử
dụng nhầm lẫn
Hệ thống đối tượng (hệ thống đích): Là hệ thống mà bạn muốn gỡ rối
Hệ thống này có thể là hệ thống mà bạn đang có một hệ thống thử nghiệm do bạn tạo ra hoặc một XDSS511 cùng với thiết bị SE gắn liên với
nó
Cáp JTAG: Là cáp nối XDS510, XDS510WS hoặc XDS5I0PP với hệ
thống đối tượng của bạn
Hộp nối JƒTAG: Là một hộp nối 14 chân trên hệ thống đối tượng của bạn,
được dùng để nối cáp JTAG
Để cài đặt XDS510, ta cần phải có một cấu hình tối thiểu về phần cứng như sau:
Máy chủ: Một máy tính PC/AT hiệu I[BM hoặc ISA/ EISA trên cơ sở máy tính PC tương thích 100%
Khe cắm (slot): Một khe cắm ]6-bit
Bo diéu khién Emulator: Board mach diéu khién Emulator XDS510
Cáp JTAG: Cap noi XDS510 với hệ thống đối tượng của bạn
Hệ thống đối tượng: Là một hệ thống do chính bạn thiết kế hoặc một Emulator XDSS511
Đầu nối JTAG: Một đầu nối 14-chân (gồm 2 hàng, mỗi hành 7 chân) trên hệ thống đối tượng của bạn
§2 Tổ chức phần cứng
2.1 Giới thiệu
Quá trình mô phỏng logic trên các bộ xử lý của Texas Instruments, thực chất
là việc gỡ rối bằng phần mềm trên nền phần cứng Như vậy một cơ cấu mô phỏng
phải bao gồm 2 công cụ:
28