1. Trang chủ
  2. » Giáo Dục - Đào Tạo

THỰC TẬP CƠ SỞ 2 Thực tập nhúng trên ARM

52 76 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thực Tập Nhúng Trên ARM
Tác giả Cao Văn Hoàng, Nguyễn Minh Dũng, Nguyễn Minh Quang, Nguyễn Anh Dũng
Người hướng dẫn Dương Phúc Phần
Trường học Học viện kỹ thuật mật mã
Thể loại thực tập
Định dạng
Số trang 52
Dung lượng 8,38 MB

Nội dung

HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA ĐIỆN TỬ-VIỄN THÔNG THỰC TẬP CƠ SỞ Thực tập nhúng ARM Nhóm sinh viên Giảng viên hướng dẫn Cao Văn Hoàng DT020122 Nguyễn Minh Dũng DT020110 Nguyễn Minh Quang DT020137 Nguyễn Anh Dũng DT020111 Dương Phúc Phần LỜI NĨI ĐẦU Lập trình nhúng khơng xa lại với chúng ta, STM32 chip ST, dựa lõi ARM Cortex-M Dòng ARM Cortex™-M hệ mới, thiết lập tiêu chuẩn hiệu suất, chi phí, ứng dụng cho thiết bị cần tiêu thụ lượng thấp, đáp ứng yêu cầu thời gian thực khắc khe Được hướng dẫn thầy Dương Phúc Phần, nhóm hồn thành phần giao bao gồm: Giới thiệu Keil Arm, lập trình ADC/ DAC cho dịng STM32 biên dịch nhân Linux Trong trình thực đề tài cịn nhiều sai sót, mong nhận nhiều ý kiến đóng góp từ thầy PHẦN GIỚI THIỆU KEIL-ARM 1.1.Sơ lược KeilC Ngày thị trường có nhiều trình biên dịch ngơn ngữ C cho dòng vi điều khiển, IAR, Keil C … Những phần mềm gọi mơi trường phát triển tích hợp (IDE: viết tắt Integrated Development Environment) Chúng đóng vai trị trình soạn thảo ngơn ngữ C, assembly, trình biên dịch, hỗ trợ debug-phát lỗi sửa câu lệnh vừa viết Ngoài chúng hỗ trợ biên dịch câu lệnh viết người sử dụng thành file hex qua nạp vào dịng vi xử lý Trong Keil C phần mềm chun dụng để tạo mơi trường lập trình hỗ trợ cho nhiều dòng vi xử lý từ ARM, AVR, 8051, PIC, với ngôn ngữ chủ yếu C assembly Giao diện hoạt động Keil C: - Màn hình làm việc Trên hình làm việc Keil C có vùng chính: Vùng 1: Vùng soạn thảo Đây nơi ta soạn thảo chương trình Người dụng lập trình phần mềm Vùng 2: Là vị trí cửa sổ Project, cho phép ta quản lý tập tin dự án, cửa sổ Function, cho phép ta quản lý chương trình con, thư viện, Vùng 3: Cửa sổ Build Output Hiển thị thông tin trình biên dịch chương trình Đây nơi thể lỗi (error) cảnh báo (warning) Sau debug project khơng có lỗi chương trình biên dịch xong lên cửa số thông báo vùng Build chương trình Sau soạn thảo chương trình xong, ta biên dịch chương trình cách vào menu Project\Build target nhấn nút Build công cụ ta nhấn phím F7 Nút Build tơ đậm hình bên Cơng dụng nút Build biên dịch đoạn chương trình thay đổi xem chúng có lỗi hay khơng Ngồi nút Build cịn có nút Rebuild, nút Rebuild dùng để biên dịch tồn chương trình bao gồm thư viên add chương trình main Tuy nhiên thời gian biên dịch nút Rebuild thường lâu Build, vị trí nút Rebuild cơng cụ debug tơ hình bên Sau chương trình tiến hành biên dịch chương trình, khơng có lỗi xảy ra, ta nhận thơng báo Error(s), Warning(s) cửa sổ Buid Output sau q trình biên dịch hồn tất Trong q trình phát triển chương trình, có hai loại lỗi (Error) xảy ra: Lỗi cú pháp (Syntax error): Lỗi sai sót cấu trúc câu lệnh thiếu tham số, sai từ khóa … Các lỗi trình biên dịch tự động phát trình biên dịch Lỗi Logic (Error): Lỗi sai sót giải thuật chương trình, làm cho chương trình chạy khơng ý đồ ban đầu lập trình viên Lỗi lập trình viên phát sửa chữa Các IDE trực tiếp phát lỗi logic, cung cấp cho người dùng cơng cụ hỗ trợ cho q trình phát sửa chữa loại lỗi Debug chương trình Keil C việc hỗ trợ ta soạn thảo biên dịch chương trình, cịn hỗ trợ ta cơng cụ gỡ rối (Debug) chương trình hiệu Để chạy debug chương trình sau biên dịch thành cơng, ta nhấn kích hoạt chức debug cách sau: Nhấn tổ hợp phím tắt Ctrl + F5 Các cảnh báo warning, khơng phải error nên cho dù chương trình có warning hoạt động hình thường Các warning dùng để cảnh báo câu lệnh có lỗi tiềm ẩn, câu lệnh không sử dụng khai báo, Mở menu Debug-Start/Stop Debug Session Để mở chức debuger ta nhấn vào nút khoanh vùng hình bên Muốn tắt chức Debug, ta làm lại thao tác lần Sau kích hoạt chức Debug, cửa sổ Keil C có dạng hình Nếu có cửa sổ khơng xuất hiện, ta vào menu View để bật cửa sổ lên Trong cửa sổ này, có vùng hình bên dưới: Vùng 1: Cửa sổ thể ghi vi điều khiển Vùng 2: Cửa sổ lệnh soạn thảo, chứa chương trình debug Vùng 3: Cửa sổ Watches cho phép ta theo dõi giá trị biến chứa chương trình Muốn biết giá trị biến nào, ta chọn cửa sổ nhấn phím F2, sau nhập tên biến cần theo dõi Lúc này, sổ hiển thị tên biến giá trị biến Vùng 4:Cửa sổ Disassembly : Cho ta biết xác lệnh Keil C viết hợp ngữ Kích hoạt cửa sổ cách vào menu View/Disassembly Bên cạnh chức Keil C hỗ trợ nhiều chức khác cho người sử dụng chẳng hạn Cửa sổ Memory Kích hoạt menu View/Memory Cho phép xem nội dung nhớ chương trình nhớ liệu hình bên dưới: Muốn xem nhớ chương trình địa đó, ta nhập Địa vào ô Address Ta quan sát trạng thái Port, Timer, ngắt cách vào menu Peripherals, chọn đối tượng cần quan sát Như ví dụ hình đây, ghi GPIOA hiển thị để ta quan sát trực tiếp giá trị chương trình chạy: Chạy Debug: Sau kích hoạt đầy đủ cửa sổ cần thiết, ta bắt đầu cho chạy debug cách chọn nút công cụ Debug : Bước 7: Ở hàm while sử dụng đoạn lệnh HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_R, (uint32_t)((theory_voltage/(float)3.0)*(float)4095.0)); HAL_Delay(2000); theory_voltage+=(float)0.20; if(theory_voltage>(float)3.1) { theory_voltage=0; } Để xuất giá trị điện áp chân PA4 cách khoảng 2000ms chạy cách 0.2 volt giá trị lớn 3.1volt quay trở Bước 8: Viết chương trình phục vụ ngắt ADC Void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){ if(hadc->Instance==hadc1.Instance){ adc_value=HAL_ADC_GetValue(&hadc1); real_voltage=(adc_value/4095.0)*3.0; }} để tính giá trị điện áp thực tế Bước 9: Build & Debug để kiểm tra giá trị thực tế lí thuyết Như ta thấy giá trị điện áp theo lí thuyết thực tế chân PA0 PA4 PHẦN 3: BIÊN DỊCH NHÂN EMBEDDED LINUX 3.1 Các bước tải cài đặt linux kernel Bược 1: Tải linux kernel stable : $ wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.10.8.tar.xz Bước 2: Busybox stable nhất: $ wget http://busybox.net/downloads/busybox-1.26.2.tar.bz2 Bước 3: Cài đặt cross-compiler chạy Linux, build code cho ARM $sudo add-apt-repository ppa:linaro-maintainers/toolchain $sudo apt-get install gcc-arm-linux-gnueabi Bước 4: Cài đặt Qemu ARM để mô board vexpress-a9 $sudo apt-get install qemu qemu-system-arm Bước 5: Khởi động thử board vexpress-a9 $qemu-system-arm -M vexpress-a9 -m 512 3.2.Các bước biên dịch Kernel từ MainStream Bước 1: Giải nén kernel : $unxz linux-4.10.8.tar.xz $tar -xvf linux-4.10.8.tar Bước 2: Cấu hình build kernel Toolchain ta cài $cd linux-4.10.8 $make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- vexpress_defconfig $make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- all Bước 3: Khi trình build kết thúc, bạn thấy nhân tạo đường dẫn linux-4.10.8/arch/arm/boot/zImage 3.3 Các bướcbiên dịch Busybox từ MainStream $bzip2 -d -k busybox-1.26.2.tar.bz2 $cd busybox-1.26.2 $make ARCH=arm CROSS_COMPLIE=arm-linux-gnueabi- defconfig Bước 1: Sửa cấu hình build Busybox để hỗ trợ buildstatic $make ARCH=arm CROSS_COMPLIE=arm-linux-gnueabi- menuconfig Bước 2: Sau chỉnh sửa đường dẫn sau: Busybox Settings > Build Options > Build BusyBox as a static binary (no shared libs) $make ARCH=arm CROSS_COMPLIE=arm-linux-gnueabi- install Bước 3: Tạo file system chứa Busybox Như nói trên, ta cần file system để chứa ứng dụng phía user-space Ít phải có init program, chương trình mà kernel chạy Process chương trình ln 1, cha tiến trình Linux $cd examples/bootfloopy $ls bootfloppy.txt etc mkrootfs.sh quickstart.txt display.txt mkdevs.sh mksyslinux.sh syslinux.cfg copy file etc từ busybox-1.26.2 sang bootfloppy : Ta cần sửa chút file cấu hình init program Nó nằm /etc/inittab, sửa nội dung thành sau: Bước 4: Giờ ta tạo file system từ thư mục rootfs_content Đầu tiên, tạo file system ext3 trống: $dd if=/dev/zero of=BusyBoxRootFS.ext3 bs=1M count=32 $mkfs.ext3 BusyBoxRootFS.ext3 Sau đó, mount file system vừa tạo file BusyBoxRootFS.ext3 vào để tạo nội dung cho (nhớ phải có tham số -o nha): sudo mount -t ext3 BusyBoxRootFS.ext3 tmpfs/ -o loop $cp -fR rootfs_content/* tmpfs/ Bước 6: Cuối umount nó: 1$umount tmpfs TỔNG KẾT - Kết đạt được: Sau hoàn thành phần tập giao, nhóm đạt kết sau: + Hiểu rõ thêm phần mềm Keil – ARM, qua lập trình thành thạo qua phần mềm + Nắm khái niệm ADC/DAC cách lập trình ADC/ DAC cho STM32 ứng dụng cho dịng chip khác + Hiểu thêm sơ lược Linux, ứng dụng chúng cách biên dịch nhân Linux

Ngày đăng: 06/01/2022, 16:39

HÌNH ẢNH LIÊN QUAN

Trên màn hình làm việc của KeilC có 3 vùng chính: - THỰC TẬP CƠ SỞ 2 Thực tập nhúng trên ARM
r ên màn hình làm việc của KeilC có 3 vùng chính: (Trang 4)
Trong cửa sổ này, có 4 vùng chính như hình bên dưới: - THỰC TẬP CƠ SỞ 2 Thực tập nhúng trên ARM
rong cửa sổ này, có 4 vùng chính như hình bên dưới: (Trang 7)
menu Peripherals, chọn các đối tượng cần quan sát. Như ví dụ trong hình dưới đây, các thanh ghi của GPIOA được hiển thị để ta quan sát trực tiếp giá trị khi chương  trình đang chạy: - THỰC TẬP CƠ SỞ 2 Thực tập nhúng trên ARM
menu Peripherals, chọn các đối tượng cần quan sát. Như ví dụ trong hình dưới đây, các thanh ghi của GPIOA được hiển thị để ta quan sát trực tiếp giá trị khi chương trình đang chạy: (Trang 9)
Độ phân giải: Cho phép cấu hình độ phân giải: 12bit, 10bit, 8bit hoặc 6bit. Kết quả chuyển đổi của khối ADC sẽ được lưu trữ trong 16bit thấp của 1 thanh ghi, người  dùng có thể lựa chọn lưu ở phần bit thấp hoặc bit cao - THỰC TẬP CƠ SỞ 2 Thực tập nhúng trên ARM
ph ân giải: Cho phép cấu hình độ phân giải: 12bit, 10bit, 8bit hoặc 6bit. Kết quả chuyển đổi của khối ADC sẽ được lưu trữ trong 16bit thấp của 1 thanh ghi, người dùng có thể lựa chọn lưu ở phần bit thấp hoặc bit cao (Trang 16)
2.1.2. Thực hành 1– adc đơn kênh, chuyển đổi 1 lần sử dụng chế độ polling - THỰC TẬP CƠ SỞ 2 Thực tập nhúng trên ARM
2.1.2. Thực hành 1– adc đơn kênh, chuyển đổi 1 lần sử dụng chế độ polling (Trang 21)
Bài thực hành này sẽ sử dụng phần mềm STM32CUBEMX để cấu hình ADC channel 0 (Chân PA0) hoạt động với chế động Single channel – Continuous  conversion mode - THỰC TẬP CƠ SỞ 2 Thực tập nhúng trên ARM
i thực hành này sẽ sử dụng phần mềm STM32CUBEMX để cấu hình ADC channel 0 (Chân PA0) hoạt động với chế động Single channel – Continuous conversion mode (Trang 21)
Tùy thuộc vào chế độ cấu hình đã chọn, dữ liệu phải được ghi vào thanh ghi được chỉ định như mô tả bên dưới: - THỰC TẬP CƠ SỞ 2 Thực tập nhúng trên ARM
y thuộc vào chế độ cấu hình đã chọn, dữ liệu phải được ghi vào thanh ghi được chỉ định như mô tả bên dưới: (Trang 30)
Bước 3: Cấu hình xung clock cho chip chạy ở 168Mhz - THỰC TẬP CƠ SỞ 2 Thực tập nhúng trên ARM
c 3: Cấu hình xung clock cho chip chạy ở 168Mhz (Trang 34)
Bước 4: Cấu hình chế độ ADC và DAC - THỰC TẬP CƠ SỞ 2 Thực tập nhúng trên ARM
c 4: Cấu hình chế độ ADC và DAC (Trang 35)
Bước 2: Cấu hình và build kernel bằng Toolchain ta đã cài ở trên $cd linux-4.10.8 - THỰC TẬP CƠ SỞ 2 Thực tập nhúng trên ARM
c 2: Cấu hình và build kernel bằng Toolchain ta đã cài ở trên $cd linux-4.10.8 (Trang 45)
Bước 1: Sửa cấu hình build của Busybox để chỉ hỗ trợ buildstatic - THỰC TẬP CƠ SỞ 2 Thực tập nhúng trên ARM
c 1: Sửa cấu hình build của Busybox để chỉ hỗ trợ buildstatic (Trang 47)
Ta cần sửa một chút file cấu hình của init program. Nó nằm ở /etc/inittab, sửa nội dung thành như sau: - THỰC TẬP CƠ SỞ 2 Thực tập nhúng trên ARM
a cần sửa một chút file cấu hình của init program. Nó nằm ở /etc/inittab, sửa nội dung thành như sau: (Trang 49)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w