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

Báo cáo thực tập doanh nghiệp cài đặt hệ điều hành và triển khai device driver cơ bản trên máy tính nhúng

28 1 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 đề Báo cáo thực tập doanh nghiệp cài đặt hệ điều hành và triển khai device driver cơ bản trên máy tính nhúng
Tác giả Nguyễn Kim Quốc
Người hướng dẫn Trần Đại Dương
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Khoa Kỹ Thuật Máy Tính
Thể loại Báo cáo thực tập doanh nghiệp
Năm xuất bản 2021
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 28
Dung lượng 693,11 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MẪU BÁO CÁO THỰC TẬP TỐT NGHIỆP TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KỸ THUẬT MÁY TÍNH BÁO CÁO THỰC TẬP DOANH NGHIỆP CÀI ĐẶT HỆ ĐIỀU HÀNH VÀ TRIỂN KHAI DEVICE DRIVER CƠ BẢN TRÊN MÁY TÍNH NHÚNG SV t[.]

Trang 1

KHOA KỸ THUẬT MÁY TÍNH

-

BÁO CÁO THỰC TẬP DOANH NGHIỆP

CÀI ĐẶT HỆ ĐIỀU HÀNH VÀ TRIỂN KHAI DEVICE DRIVER CƠ BẢN TRÊN MÁY TÍNH

NHÚNG

SV thực hiện: Nguyễn Kim Quốc

MSSV: 18521310 Lớp: CE502.M11 GVHD: Trần Đại Dương

Thành phố Hồ Chí Minh – Năm 2021

Trang 2

LỜI CẢM ƠN

Lời mở đầu em xin cảm ơn các thầy cô trường Đại học Công nghệ Thông tin nói chung, các thầy cô khoa Kỹ thuật Máy tính nói riêng đã giúp em có được kiến thức nền tảng vững chắc để có thể tự tin bắt đầu quá trình thực tập tại doanh nghiệp Em cũng xin cảm ơn các anh Trương Anh Tiến, Hoàng Anh Tú là nhân viên thuộc Công ty cổ phần tập đoàn công nghệ Unicloud đã hướng dẫn và hỗ trợ em hết mình trong quá trình em thực tập tại công ty Cuối cùng em xin cảm ơn thầy Trần Đại Dương vì đã giám sát chặt chẽ em trong cả quá trình thực tập và giúp đỡ em hoàn thiện bài báo cáo này

TP HCM, tháng 12 năm 2021 Sinh viên thực hiện

Nguyễn Kim Quốc

Trang 3

MỤC LỤC

LỜI CẢM ƠN II MỤC LỤC III DANH MỤC TỪ VIẾT TẮT IV

1 LỊCH LÀM VIỆC 1

1.1 Lịch làm việc của công ty 1

1.2 Lịch làm việc của bản thân 1

2 GIỚI THIỆU CÔNG TY CỔ PHẦN TẬP ĐOÀN CÔNG NGHỆ UNICLOUD 1

3 NỘI DUNG CÔNG VIỆC ĐƯỢC GIAO 2

3.1 Danh sách công việc được giao 2

3.2 Yêu cầu cụ thể 3

4 QUÁ TRÌNH THỰC HIỆN VÀ KẾT QUẢ CÔNG VIỆC 4

4.1 Công việc 1: Tìm hiểu và viết tài liệu hướng dẫn cài hệ điều hành cho một máy tính nhúng 4

4.2 Công việc 2: Tìm hiểu Linux loadable module 5

4.3 Công việc 3: Tìm hiểu Yocto Project 6

4.4 Công việc 4: Xây dựng hệ điều hành cho Raspberry Pi từ mã nguồn sẵn có bằng Yocto Project 8

4.5 Công việc 5: Triển khai một Linux device driver đơn giản cho Raspberry Pi 11

4.6 Công việc 6, 7, 8, 9: Tìm hiểu về bộ xử lý trên gateway, xây dựng, cài đặt hệ điều hành cho gateway, triển khai device driver cơ bản qua SSH và cấu hình tìm nạp nhân Linux từ bộ nhớ ngoài 20

5 KẾT QUẢ ĐẠT ĐƯỢC CỦA BẢN THÂN 21

6 NHẬN XÉT VỀ CHƯƠNG TRÌNH ĐÀO TẠO CỦA KHOA 22

TÀI LIỆU THAM KHẢO 24

Trang 4

DANH MỤC TỪ VIẾT TẮT

Trang 5

1 LỊCH LÀM VIỆC

1.1 Lịch làm việc của công ty

Công ty có 2 khối nhân viên:

- Khối văn phòng: Làm việc 8.8 tiếng/ngày, 5 ngày/tuần từ thứ hai đến hết chiều thứ sáu

- Khối Sản xuất và Vận hành: Làm việc 8 tiếng/ngày, 5.5 ngày/tuần từ thứ hai đến trưa thứ bảy

Thời gian làm việc của công ty từ ngày bắt đầu kì thực tập:

- 13/09 – 22/10: Làm việc trực tuyến do ảnh hưởng bởi dịch Covid

- 25/10 – nay: Làm việc trực tiếp tại công ty

1.2 Lịch làm việc của bản thân

Lịch làm việc của bản thân có khác với lịch của công ty vì một số lý do cá nhân:

- Làm việc 8.8 tiếng/ngày, 4 ngày/tuần từ thứ hai đến thứ năm

- 13/09 – 28/10: Làm việc trực tuyến

- 01/11 – 03/12: Làm việc trực tiếp tại công ty

2 GIỚI THIỆU CÔNG TY CỔ PHẦN TẬP ĐOÀN CÔNG NGHỆ UNICLOUD

Công ty cổ phần tập đoàn công nghệ Unicloud là thành viên chịu trách nhiệm lĩnh vực công nghệ của Tập đoàn kinh tế đa ngành Sunshine Group

Trang chủ của công ty tự giới thiệu như sau: “Được thành lập từ năm 2016, Unicloud

là công ty công nghệ chuyên về các giải pháp công nghệ IoT liên quan tới tối ưu và nâng cao chất lượng đời sống của cư dân tại các dự án căn hộ hạng sang Với tiên chỉ đó, Unicloud không ngừng phát triển và cho ra đời các giải pháp như giải pháp tổng thể cho smart living, giải pháp nhà thông minh, giải pháp bãi đỗ xe thông minh, giải pháp an ninh thông minh, giải pháp thang máy thông minh, giải pháp kiểm soát ra vào thông minh và còn nhiều giải pháp nữa sắp tới Để kiểm soát và đảm bảo chất lượng sản phẩm cũng như dịch vụ tới từng cư dân, khách hàng, tại Unicloud, chúng tôi lắng nghe khách hàng, và theo đó cùng với đội ngũ kỹ sư kỹ thuật trẻ trung, sáng tạo hơn 50 người được lãnh đạo

Trang 6

sản phẩm hoàn thiện cả phần cứng cũng như phần mềm từ khâu lên thiết kế ý tưởng sản phẩm, thiết kế mẫu sản phẩm gồm vẽ mạch, viết firmware và viết app cho tới test kiểm sản phẩm kỹ lưỡng trên các mô hình thực tế, và cuối cùng là cho ra đời các sản phẩm hoàn thiện sản xuất hàng loạt tại nhà máy được kiểm soát chặt chẽ của chúng tôi.” (trích dẫn từ https://career.unicloud.com.vn/intern/)

Tầm nhìn của công ty là không ngừng đổi mới, sáng tạo để giải quyết các vấn đề của người dùng và các ngành dịch vụ bằng sự chủ động, nguồn nhân lực chất lượng cao và công nghệ hiện đại, kết nối tất cả các Thiết bị - Dịch vụ - Con người Hướng đến Top 10 SEA và TOP 500 tập đoàn công nghệ thế giới với 5,000 nhân sự tại ít nhất 10 quốc gia trên toàn cầu

Sứ mệnh của công ty là tiên phong trong chuyển đổi số của Việt Nam và thế giới, giúp nâng tầm giá trị chất xám của người Việt phục vụ cho cộng đồng văn minh giúp nâng cao chất lượng sống không chỉ của người Việt mà trên toàn thế giới

Những lĩnh vực phát triển của công ty:

- Xây dựng các ứng dụng di động (Mobile App) cho việc giám sát, điều khiển,

- Thiết kế phần cứng của Sản phẩm

- Sản xuất Sản phẩm

- Xây dựng Firmware, Cloud Server,

- Xây dựng Mobile App, Website,

- AI, Machine learning, …

Unicloud có hai trụ sở:

- Trụ sở chính: Tầng 10, Toà nhà Sunshine Center, Số 16 Phạm Hùng, Hà Nội

- Chi nhánh: Block 5, Lô I-3B-1, Đường N6, Khu Công Nghệ Cao, P Tân Phú,

TP Thủ Đức, TP Hồ Chí Minh

3 NỘI DUNG CÔNG VIỆC ĐƯỢC GIAO

3.1 Danh sách công việc được giao

Danh sách các công việc được giao và thời gian thực hiện được trình bày trong Bảng 3.1

Trang 7

Bảng 3.1: Kế hoạch thực tập

STT Tên công việc Thời gian thực hiện

Tình trạng

Từ ngày Đến ngày

1

Tìm hiểu và viết tài liệu hướng

dẫn cài hệ điều hành cho một

5 Triển khai Linux device driver

đơn giản cho Raspberry Pi 21/10/2021 28/10/2021 100%

6 Tìm hiểu về gateway của công

7

Xây dựng hệ điều hành từ mã

nguồn được cung cấp cho

gateway của công ty

04/11/2021 09/11/2021 100%

8 Cài đặt hệ điều hành cho

gateway của công ty 10/11/2021 15/11/2021 100%

Công việc 1: Tìm hiểu và viết tài liệu hướng dẫn cài hệ điều hành cho một máy tính

nhúng: Đối tượng là một máy tính nhúng có sẵn trên thị trường mà công ty đang có ý

định sử dụng trong tương lai; nhiệm vụ là tìm kiếm, đọc, dịch và ghi chú lại các lỗi có thể xảy ra trong quá trình thực hiện với định dạng tệp markdown, cụ thể là quá trình xây dựng hệ điều hành từ mã nguồn có sẵn Công việc này được dùng để đánh giá khả năng tìm hiểu tài liệu của sinh viên thực tập

Công việc 2: Tìm hiểu Linux loadable module: tìm hiểu định nghĩa, cách thức hoạt động và viết một chương trình “hello world”

Trang 8

Công việc 3 và 4: Tìm hiểu Yocto Project và xây dựng hệ điều hành cho Raspberry Pi

từ mã nguồn có sẵn bằng Yocto Project:

- Tìm hiểu khái niệm, cấu trúc, cách thức hoạt động của Yocto Project

- Vận dụng kiến thức học được xây dựng một hệ điều hành có khả năng kết nối wifi, ethernet; có khả năng thiết lập kết nối SSH và thực thi được Loadable

kernel modules (tệp ko)

Công việc 5: Triển khai một linux device driver đơn giản cho Raspberry Pi: viết một device driver có khả năng bật tắt một led thông qua các lệnh “echo” và “cat”, triển khai device driver đó lên Raspberry Pi thông qua SSH

Công việc 6, 7, 8: Tìm hiểu về bộ xử lý trên gateway, xây dựng và cài đặt hệ điều hành cho gateway: tìm kiếm các tài liệu về bộ xử lý, cách cấu hình phần cứng, dùng Yocto Project xây dựng hệ điều hành với mã nguồn được nhà sản xuất bộ xử lý cung cấp, cài đặt hệ điều hành đó vào gateway

Công việc 9: Triển khai device driver cơ bản qua SSH và cấu hình tìm nạp nhân Linux từ bộ nhớ ngoài: thiết lập các tệp liên quan tới Ethernet để kết nối SSH giữa máy chủ phát triển và gateway, viết một device driver đơn giản in ra “hello world” tại máy chủ và triển khai lên gateway qua SSH; thử cấu hình tìm nạp hệ điều hành từ bộ nhớ ngoài

Khi thực hiện các công việc 6, 7, 8, 9 phải ghi lại cách thức thực hiện và các lỗi xảy ra trong quá trình thực hiện kèm cách sửa thành một tệp markdown và đẩy tệp đó lên git dùng làm tài liệu cho dự án

4 QUÁ TRÌNH THỰC HIỆN VÀ KẾT QUẢ CÔNG VIỆC

4.1 Công việc 1: Tìm hiểu và viết tài liệu hướng dẫn cài hệ điều hành cho một máy tính nhúng

4.1.1 Quy trình thực hiện

Bước 1: Từ tên máy tính nhúng mà người hướng dẫn cung cấp, tìm kiếm trên Internet

và xác định được trang chủ của nhà sản xuất thiết bị

Bước 2: Tìm kiếm tài liệu tương ứng với thiết bị do nhà sản xuất cung cấp

Bước 3: Đọc và ghi chú thành các tệp markdown

Trang 9

Bước 4: Làm theo hướng dẫn của tài liệu để xây dựng các hệ điều hành khác nhau từ

mã nguồn nhà sản xuất cung cấp, sửa các lỗi phát sinh và ghi chú vào tệp markdown

4.1.2 Kết quả công việc

Vì hợp đồng bảo mật thông tin của công ty nên phần này em chỉ trình bày quy trình thực hiện và kết quả công việc mà không trình bày cụ thể quá trình làm những gì

Hoàn thành được công việc và được người hướng dẫn đánh giá hoàn thành 100% tại lần tổng kết công việc tháng 09

4.2 Công việc 2: Tìm hiểu Linux loadable module

4.2.1 Quy trình thực hiện

Bước 1: Tham khảo tài liệu có sẵn trên mạng Internet để tìm hiểu các kiến thức về

Linux loadable module

Bước 2: Dựa theo các hướng dẫn có sẵn thiết lập môi trường để xây dựng Linux

loadable module

Bước 3: Lập trình và thực thi chương trình “hello world”

4.2.2 Kết quả công việc

Loadable kernel module là module có thể lắp và tháo ra khỏi nhân Linux mà không cần phải biên dịch lại nhân hay khởi động lại hệ thống

Có 3 loại Linux loadable module: device driver, system call, file system

Quá trình đưa một Linux loadable module vào bên trong kernel space tự động:

- Nhân Linux kích hoạt tiến trình modprobe với tham số là tên module (ví dụ: abc.ko)

- Tiến trình modprobe sẽ kiểm tra /lib/modules/`uname -r`/modules.dep để kiểm tra xem abc.ko có phụ thuộc vào một module bcd.ko nào đó không

- Giả sử abc.ko phụ thuộc vào bcd.ko thì tiến trình modprobe sẽ kích hoạt tiến trình insmod để đưa bcd.ko vào trước rồi sau đó tới abc.ko

Có 2 cách để nhân Linux kích hoạt tiến trình modprobe tự động:

- Sử dụng kmod, là một thành phần trong nhân Linux, hoạt động trong kernel space Khi một thành phần nào đó của nhân cần đưa một module vào trong

Trang 10

kernel space, nó sẽ truyền tên module cho hàm request_module của kmod Hàm request_module sẽ gọi hàm call_usermodehelper_setup để sinh ra tiến trình modprobe

- Sử dụng udevd, đây là một tiến trình hoạt động trong user space Nếu một thiết

bị cắm vào hệ thống máy tính, thì điện trở trên bus ngoại vi (ví dụ PCI bus hoặc USB bus) sẽ thay đổi và bộ điều khiển (controller) sẽ biết điều này Khi

đó, bus driver sẽ gửi một bản tin lên cho tiến trình udevd Bản tin này chứa thông tin về thiết bị Tiến trình udevd sẽ tra cứu file /lib/modules/`uname -r`/modules.alias để tìm ra driver nào tương thích với thiết bị Sau đó, udevd sinh ra tiến trình modprobe

Để xây dựng Linux loadable module cơ bản:

- Phải thêm thư viện <linux/module.h> để xử dụng 2 macro module_init(), module_exit() 2 macro này dùng để xác định 2 hàm sẽ chạy khi nạp module vào nhân và khi tháo module ra khỏi nhân

- Phải truyền giá trị cho biến obj-m trong file Makefile để chỉ ra object được xây dựng theo hướng kernel module

Lắp module vào trong kernel space thủ công:

4.3.2 Kết quả công việc

Sơ lược về Yocto Project:

Trang 11

- Yocto Project là một dự án mã nguồn mở có khả năng tạo ra các bản phân phối Linux cho các thiết bị nhúng

- Yocto Project dựa trên dự án OpenEmbedded (OE) sử dụng công cụ Bitbake

để xây dựng các hình ảnh Linux (Linux image)

- OpenEmbedded-Core và Bitbake kết hợp cùng với một bộ các metadata (các recipes, config, ) tạo thành Poky Có thể nói Poky là build system của Yocto Project Cấu trúc của Yocto Project được trình bày cụ thể trong Hình 4.1

Hình 4.1: Cấu trúc Yocto Project [1]

- Bitbake là công cụ cốt lõi của Yocto, nó sẽ thông dịch các script được viết trong các recipes (công thức tạo phần mềm) và tạo các hàng đợi các tác vụ cần thực hiện theo thứ tự

- Các thành phần linux mà Yocto có thể xây dựng:

Trang 12

Hình 4.2: Quy trình làm việc của Yocto Project [1]

4.4 Công việc 4: Xây dựng hệ điều hành cho Raspberry Pi từ mã nguồn sẵn có bằng Yocto Project

4.4.2 Kết quả công việc

Sau khi làm theo các bước trong quy trình thực hiện, kết quả đạt được là cách dùng Yocto Project để xây dựng bản phân phối Linux từ mã nguồn có sẵn, bên dưới là cách thực hiện mà em nghiên cứu được

Chuẩn bị các package cần thiết cho host (Dùng Ubuntu 20.04)

$ sudo apt install gawk wget git-core diffstat unzip texinfo gcc-multilib \

build-essential chrpath socat libsdl1.2-dev xterm

Tạo thư mục chứa Project: Ở đây ta sẽ dùng bản phân phối Linux tại nhánh hardknott

vì đây là bản phân phối mới nhất hiện tại Xem thêm tại https://git.yoctoproject.org/poky/refs/heads

Trang 13

$ mkdir ~/raspberrpi_yocto

$ cd raspberrpi_yocto

$ git clone -b hardknott git://git.yoctoproject.org/poky.git

Thêm meta dành riêng cho Raspberry Pi

$ cd poky

$ git clone -b hardknott git://git.yoctoproject.org/meta-raspberrypi

Chạy script tạo thư mục build: Yocto cung cấp cho ta một tệp chứa các script để tự động tạo một thư mục chứa kết quả xây dựng, tệp script có tên oe-init-build-env nằm trong thư mục poky

$ cd

$ source poky/oe-init-build-env build

Cấu hình các thành phần để xây dựng tại thư mục conf/ :

- Tại tệp bblayers.conf :

BBLAYERS ?= " \

/home/quockimnguyen/raspberrpi_yocto/poky/meta \ /home/quockimnguyen/raspberrpi_yocto/poky/meta-poky \ /home/quockimnguyen/raspberrpi_yocto/poky/meta-yocto-bsp \

Trang 14

EXTRA_USERS_PARAMS = " useradd pi; \

usermod -p 'raspberry' pi; \ usermod -a -G sudo pi; \ usermod -P root root; "

- Trước khi xây dựng ta cần phải cấu hình máy đích (Machine) Ta có thể xem tên các loại máy đích khác nhau của Raspberry Pi tại thư mục poky/meta-raspberrypi/tree/conf/machine

$ echo “MACHINE=\”machine name\”” > conf/local.conf

Tiến hành xây dựng: Các loại hình ảnh Linux có thể xây dựng nằm tại thư mục poky/meta-raspberrypi/recipes-core/images Chạy lệnh sau để tiến hành xây dựng tự động hình ảnh Linux

$ bitbake rpi-basic-image

Sau khi xây dựng xong (khoảng 4 – 5 tiếng) thì hình ảnh Linux sẽ nằm tại thư mục build/tmp/deploy/images/<machine name>/ Hình 4.3 cho thấy các hình ảnh Linux sau khi quá trình xây dựng hoàn thành

Trang 15

Hình 4.3: Các tệp hình ảnh Linux sau khi hoàn thành xây dựng

4.5 Công việc 5: Triển khai một Linux device driver đơn giản cho Raspberry Pi 4.5.1 Quy trình thực hiện

Bước 1: Dựa theo kiến thức từ công việc trước có thể tạo ra một device driver cơ bản Bước 2: Tìm hiểu thêm các bài học về cách tạo ra device file, thứ sẽ tồn tại trong thư mục /dev/ để có thể sử dụng các lệnh “echo” và “cat” để đọc ghi dữ liệu

Bước 3: Tham khảo datasheet của Raspberry Pi để tìm kiếm địa chỉ cơ sở của các chân GPIO

Bước 4: Lập trình device driver tại máy chủ và triển khai lên Raspberry Pi thông qua SSH

4.5.2 Kết quả công việc

Xây dựng SDK cho Raspberry Pi:

- Dùng lệnh dưới để xây dựng SDK:

$ bitbake –c populate_sdk

- Chạy tệp sh để cài đặt SDK vào máy:

Ngày đăng: 27/05/2023, 15:26

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w