Chương 3: Cỏc Lab cơ bản ủể phỏt triển hệ thống
1. Gọi thủ tục ARM – ATPCS(ARM)
ATPCS là một loạt cỏc quy tắc cơ bản ủược sử dụng trong cỏc chương trỡnh bắt tay.
Những quy tắc này bao gồm:
• Hỗ trợ kiểm tra giới hạn ngăn xếp dữ liệu.
• Hỗ trợ ủọc một phần vị trớ khụng liờn quan (ROPI)
• Hỗ trợ ủọc viết phần vị trớ khụng liờn quan (PWPI)
• Hỗ trợ sử dụng hỗn hợp chương trình Thumb và ARM.
• Máy tính hiện quá trình xử lý
Khi sử dụng các quy tắc trên, chương trình ứng dụng phải tuân theo các quy tắc sau:
• Lập trình phải tuân theo ATPCS
• Sử dụng cỏc thanh ghi và ngăn xếp dữ liệu ủể chuyển ủổi cỏc tham biến.
• Sử dụng hợp ngữ Assembly_các thông số atpcs
ðối với cỏc quy tắc ATPCS khỏc, người dựng cú thể ủọc những cuốn sỏch bộ xử lý ARM có liên quan hoặc ghé qua website ARM.
Theo các quy tắc của ATPCS, người dùng có thể viết chương trình bằng cách sử dụng cỏc ngụn ngữ khỏc nhau. Vấn ủề chớnh là giải quyết việc chuyển ủổi tham số. Những thanh ghi tạm thời và ngăn xếp dữ liệu ủược sử dụng ủể chuyển ủổi thụng số. Cỏc thụng số 1-4 sử dụng các thanh ghi R0-R4. Nếu chương trình có nhiều hơn 4 thông số, các thụng số này nờn ủược chuyển bằng cỏch là sử dụng ngăn xếp dữ liệu. Kết quả là chương trỡnh nờn tiếp nhận bao nhiờu thụng số ủược chuyển giao. Tuy nhiờn, khi chương trỡnh ủược gọi thỡ nú khụng thể biết cú bao nhiờu thụng số ủược chuyển ủổi.
Cỏc chương trỡnh ứng dụng ủược viết bằng cỏch sử dụng cỏc ngụn ngữ khỏc nhau cú thể xỏc ủịnh cỏc quy ước riờng của mỡnh ủể chuyển tham số. Cỏc phương phỏp thường ủược sử dụng là sử dụng thụng số ủầu tiờn hoặc cuối cựng ủể cho biết số lượng của cỏc thụng số (bao gồm cả giỏ trị). Ánh xạ thanh ghi ATPCS ủược thể hiện như bảng 3.5:
Thanh ghi ARM < = = > Tên ATPCS
Mô tả thanh ghi ATPCS
R0-R3 < = = > a1-a4 Tham số/kết quả/vùng làm việc thanh ghi 1-4
R4 < = = > v1 Biến cục bộ thanh ghi 1 R5 < = = > v 2 Biến cục bộ thanh ghi 2 R6 < = = > v 3 Biến cục bộ thanh ghi 3 R7 < = = > v 4 Biến cục bộ thanh ghi 4
Thanh ghi làm việc với trạng thái Thumnb
R8 < = = > v 5 Thanh ghi 5 có biến cục trong trạng thái ARM
R9 < = = > v 6 Thanh ghi 6 có biến cục trong trạng thái ARM
ðộ ổn ủịnh căn cứ vào thanh ghi ủịa chỉ của RWTI
R10 < = = > v 7 Thanh ghi 7 có biến cục trong trạng thái ARM
Con trỏ hạn chế dữ liệu
R11 < = = > v 8 Thanh ghi 8 có biến cục trong trạng thái ARM
R12 < = = > ip Thanh ghi tạm thời ủược sử dụng trong chương trình con
R13 < = = > sp Kho dữ liệu con trỏ R14 < = = > lr Thanh ghi liên kết R15 < = = > pc Bộ ủếm chương trỡnh 2.Hàm main() và _ gccmain
Khi chương trình bao gồm hàm main() , thì hàm main() có thể khởi tạo thư viện thời gian chạy chương trỡnh C. Khởi tạo này ủược thực hiện thụng qua hàm _gccmain. Sự xõm nhập của hàm main(), trỡnh biờn dịch sẽ gọi hàm_gccmain() ủầu tiờn và sau ủú thực hiện phần cũn lại của mó. Hàm _gccmain() ủược thực hiện trong thư viện C chuẩn.
Khi chương trình ứng dụng không bao gồm hàm main(), thì thư viện thời gian chạy chương trỡnh C sẽ khụng khởi ủộng và nhiều chức năng từ thư viện này sẽ khụng ủược sử dụng trong các chương trình ứng dụng.
Trong hướng dẫn cơ bản của Lab, hàm thư viện khụng ủược ủưa vào. Kết quả là, việc sử dụng hàm thư viện sẽ khụng ủược ủưa ra ở ủõy. Nếu hàm main() ủược sử dụng làm hàm chớnh của chương trỡnh ứng dụng, hàm _gccmain() cú thể ủược thờm vào mó nguồn.(sử dụng một trong hai ngôn ngữ C hoặc Assembly).
3.7.6Cỏc bước hoạt ủộng
1) Tham khảo cỏc Lab trước, tạo ra một thiết kế mới và ủặt tờn nú như là explsam.
2) Tham khảo các chương trình mẫu, hiệu chỉnh và thêm chúng vào thiết kế, lưu giữ chúng như là randtest , init.s , random.s và ldscript.
3) Tham khảo các lab trước, và làm như sau:
Compiling-> assembler setting-> linker setting->debugger setting ủể cài ủặt thiết kế mới. Biờn dịch và liờn kết thiết kế ủược thể hiện trong hỡnh 3_14.
4) Tải tập tin gỡ lỗi, mở các cửa sổ Memory/Register/Watch/Variable/Call stack windows, thực hiện từng bước chương trình. Thông qua các cửa sổ trên, xem và phõn tớch kết quả khi chương trỡnh chạy. Nghiờn cứu làm thế nào ủể sử dụng Embest IDE cho việc phát triển chương trình ứng dụng và gỡ lỗi.
5) Sau khi hiểu và nắm vững Lab, làm các bài tập sau Lab.
3.7.7Các chương trình mẫu