The Dtas

The Dtas

Share

Contact information, map and directions, contact form, opening hours, services, ratings, photos, videos and announcements from The Dtas, Education Website, Khu đô thị Ecopark, Văn Giang, Hanoi, Hung Yen.

27/04/2025

🦆 Android Autmotive - Audio Ducking

1️⃣ Audio Ducking là gì?
Khi app A đang play nhạc thì có app B gửi request ducking:
App A sẽ giảm âm lượng xuống còn 30/40/50% (tùy theo setting trong code)
App B phát âm thanh với âm lượng là 100%
Như trong video, các bạn có thể thấy Spotify đang phát nhạc rất to. Nhưng sau khi Google map được bật, âm thanh của Spotify đã giảm đi rất nhiều (chỉ giảm âm lượng, không phải dừng phát nhạc).

2️⃣ Cơ chế hoạt động của Audio Ducking
Khi app A đang chạy và không sử dụng option setWillPauseWhenDucked(true)

App B gửi request AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK và get Audio Focus
Sau khi app B dừng lại, audio focus sẽ trả lại cho app A và âm lượng của app A cũng trở lại như cũ.

3️⃣ Tác dụng của Audio Ducking
Android phát triển tính năng này giúp người dùng focus vào những âm thanh quan trọng.
Ví dụ trong video, nếu âm thanh của Spotify không được giảm nhỏ trong lúc Google Map chỉ đường, rất có thể bạn sẽ đi nhầm đường và phải vòng xe lại.

12/04/2025

🛡 How to Secure Existing C and C++ Software without Memory Safety?

Paper cung cấp việc sử dụng C/C++ an toàn hơn MÀ KHÔNG cần phải viết lại mọi thứ trong Rust hoặc Go.

Remote Code Ex*****on (RCE) attack là lỗi giúp cho attacker lợi dụng memory-corruption để chiếm quyền điều khiển của các thiết bị. Vấn đề là việc viết lại project bằng Rust/Go có thể mất cả thập kỷ!

Paper đề cập đến 4 phương pháp có thể triển khai NGAY BÂY GIỜ:
1️⃣ Stack Integrity - Protect the ex*****on stack from corruption
2️⃣ Control-Flow Integrity - Ensure function calls only go to valid destinations
3️⃣ Heap Partitioning - Make it harder for attackers to target specific memory
4️⃣ Pointer Randomization - Make pointers harder to forge or guess

Các kỹ thuật này đã được triển khai trên các nền tảng lớn như LLVM và được các công ty lớn như Apple sử dụng.

Các bạn có thể tham khảo và thử để cải thiện đáng kể tính bảo mật NGAY HÔM NAY bằng cách sử dụng các kỹ thuật này vào project hiện tại.
Link bài viết mình để ở phần comment!!!

04/04/2025

⁉️ Rust đang bị quảng cáo quá mức trong Embedded?

Vài năm gần đây, có thể các bạn đã nghe ít nhất 1 lần về Rust. Nếu search thêm một chút, bạn có thể thấy rất nhiều bài ca ngợi về memory safety, high performance....
Và bạn quyết định sẽ học Rust!!!

Mình cũng là 1 trong những người bị ảnh hưởng bởi độ hot của Rust và cũng phải công nhận học Rust thật sự rất hay.

Nhưng thật ra thì chúng ta cần phải xem xét kỹ hơn

1️⃣ Học để nâng cao mindset
Rust là một ngôn ngữ thật sự thú vị để học. Đồng thời nó cũng rất tốt để bạn nâng cao kỹ năng hiểu biết về cách vận hành của 1 ngôn ngữ lập trình an toàn là như nào.

2️⃣ Học Rust vì hiệu năng cao hơn C/C++
Cái này bạn phải hiểu rõ, Rust chỉ mới sử dụng trong các dự án nhỏ hoặc thay thế vài phần C/C++ trong project lớn.
Rõ ràng với phạm vi nhỏ, ngôn ngữ nào cũng tốt cho đến khi thực sự sử dụng 100% trong project lớn, nhiều requirement, phức tạp.

Nhiều công ty đang sử dụng C/C++ cho các project đã chạy ổn định và đã đầu tư hàng tỷ $ vào nghiên cứu và phát triển. Việc viết lại toàn bộ các tính năng này bằng ngôn ngữ Rust khá là vô lý!!!

3️⃣ Rất nhiều bài so sánh giữa Rust và C/C++
Cái này là một điểm cộng và cũng là điểm trừ.
✅ Điểm cộng là giúp chúng ta có cái nhìn tổng quan, đưa ra lựa chọn việc sử dụng ngôn ngữ.

⛔️ Nhược điểm là có một số thành phần thể hiện thái độ quá mức. Hầu như bài nào nói về C/C++ cũng sẽ có 1 ông vào bảo "chuyển sang Rust sẽ giải quyết hết tất cả vấn đề của bạn" rồi paste vài cái link vào comment.
Thỉnh thoảng mình check profile thì thấy mấy ông đó còn chưa bao giờ lập trình C/C++, mới học Rust vì những bài quảng cáo về Rust.

4️⃣ Học để kiếm job
Cái này mình không khuyến khích ở Việt Nam tại vì:
- Các công ty lớn chưa thực sự có nhiều job về Rust.
- Tùy thuộc vào lĩnh vực bạn làm.
Nếu trong Automotive, điều đầu tiên cần ưu tiên là Safety và Real-time, không phải lúc nào việc quản lý memory cũng là cần thiết nhất.
Ngược lại, các mảng khác như IOT, Networking... có triển vọng sử dụng Rust rõ ràng hơn.

01/04/2025

🐳 Tháng tư (không) là lời nói dối của Yocto

Cuộc vui nào rồi cũng đến lúc vui hơn. Chắc Yocto hiểu điều đó nên họ đăng luôn một thông báo mới về dự án tên là Zepto Linux.

Đại khái thì họ nhận thấy Yocto bắt đầu cồng kềnh và khó triển khai với các dự án mới nên họ đã lên plan tạo ra 1 AI.
Từ ngày AI ra mắt, anh em Embedded vẫn tự hào vì làm ở low-level, AI chỉ mạnh software high-level thôi chứ làm sao mà hiểu nổi code cho hardware là như nào. Thì nay, Yocto tích hợp luôn AI cho Embedded.

Đây cũng mới là khởi điểm, có thể Zepto chỉ support được ở các file config, tạo recipes đơn giản, nhưng ít nhất đó là tiền đề phát triển mạnh mẽ về AI trong Embedded.

Mình xin trích nguyên lời của Richard Purdie, Project Architect Zepto Linux.
“𝐓𝐡𝐞 𝐜𝐨𝐦𝐛𝐢𝐧𝐚𝐭𝐨𝐫𝐢𝐚𝐥 𝐬𝐩𝐚𝐜𝐞 𝐢𝐬 𝐠𝐫𝐨𝐰𝐢𝐧𝐠 𝐞𝐱𝐩𝐨𝐧𝐞𝐧𝐭𝐢𝐚𝐥𝐥𝐲, 𝐦𝐚𝐤𝐢𝐧𝐠 𝐢𝐭 𝐢𝐧𝐜𝐫𝐞𝐚𝐬𝐢𝐧𝐠𝐥𝐲 𝐝𝐢𝐟𝐟𝐢𝐜𝐮𝐥𝐭 𝐭𝐨 𝐟𝐢𝐧𝐝 𝐭𝐡𝐞 𝐫𝐢𝐠𝐡𝐭 𝐛𝐮𝐢𝐥𝐝. 𝐙𝐞𝐩𝐭𝐨 𝐋𝐢𝐧𝐮𝐱 𝐚𝐢𝐦𝐬 𝐭𝐨 𝐛𝐫𝐞𝐚𝐤 𝐟𝐫𝐞𝐞 𝐟𝐫𝐨𝐦 𝐭𝐡𝐚𝐭 𝐜𝐨𝐧𝐬𝐭𝐫𝐚𝐢𝐧𝐭 𝐛𝐲 𝐞𝐦𝐛𝐫𝐚𝐜𝐢𝐧𝐠 𝐞𝐯𝐞𝐫𝐲 𝐩𝐨𝐬𝐬𝐢𝐛𝐢𝐥𝐢𝐭𝐲 𝐚𝐧𝐝 𝐮𝐬𝐢𝐧𝐠 𝐀𝐈 𝐭𝐨 𝐠𝐮𝐢𝐝𝐞 𝐮𝐬 𝐭𝐨 𝐭𝐡𝐞 𝐛𝐞𝐬𝐭 𝐬𝐨𝐥𝐮𝐭𝐢𝐨𝐧𝐬.”

29/03/2025

🔥 Android Embedded Roadmap - Part 2

𝐈. 𝐋𝐢𝐧𝐮𝐱 𝐄𝐦𝐛𝐞𝐝𝐝𝐞𝐝
Dành cho các bạn đã nắm vững kiến thức về Embedded Advanced và muốn tìm hiểu về Embedded trên OS.
Trước khi bắt đầu tìm hiểu sâu về Linux Embedded, các bạn nên cài Ubuntu và tìm hiểu một số kiến thức:
📝 Làm quen với command line cơ bản như ls, cd, rm, mkdir, chmod,...
📝 Viết một chương trình C cơ bản và sử dụng GCC để build
📝 Viết chương trình sử dụng multi-thread, giao tiếp giữa các thread
📝 Giao tiếp giữa Server và Client sử dụng socket
Sau khi làm quen các kiến thức trên, các bạn có thể quen cách làm việc trên Linux. Tiếp theo, các bạn cần tìm hiểu:
📝 User space và Kernel space
📝Các loại driver được sử dụng trên Linux (character, network, block device driver)
📝 Hiểu và phân biệt được device driver và bus driver
📝 Hiểu được chức năng và cách sử dụng của bootloader, kernel, rootfs, device tree trong Linux Embedded
📝 Build image và chạy được trên board
Bài tập đề nghị: Build được image và flash thành công trên BeagleBone Black hoặc Raspberry Pi. Viết một chương trình điều khiển led sử dụng character device driver
Linux Embedded thực sự rất rộng, sâu và khó. Ở các công ty lớn đều rất cần nhân lực cho mảng này.
⚠️ Quá trình tìm hiểu và làm được ở mức cơ bản cần 1 năm kinh nghiệm trở lên

𝐈𝐈. 𝐀𝐧𝐝𝐫𝐨𝐢𝐝 𝐄𝐦𝐛𝐞𝐝𝐝𝐞𝐝
Dành cho các bạn đã nắm được Embedded Advanced. Tuyệt vời hơn khi bạn đã nắm được cơ bản về Linux Embedded.
Các phần cần tìm hiểu về Android:
📝 Hiểu rõ Android Architecture giúp bạn nắm được tổng quan về hệ thống
📝Tìm hiểu về System Service trên Android. Do System Service được viết bằng Java nên bạn cũng cần học thêm Java nếu chưa biết
📝 Tìm hiểu về HAL. Do HAL được generate từ HIDL hoặc AIDL nên bạn cần tìm hiểu thêm khái niệm về HIDL hoặc AIDL, làm sao để generate HAL code từ các file.
📝 Để nâng cao tốc độ và khả năng đọc hiểu code HAL, mình khuyên bạn nên tìm hiểu về Modern C++ và Design Pattern (nếu bạn chưa biết)
📝 Hiểu được cách hoạt động của SELinux. Bởi vì SELinux sẽ quản lý tất cả các quyền (đăng ký, đọc, ghi,...) của ứng dụng nên phần này cực kì quan trọng.
📝 Nếu bạn muốn tìm hiểu về Automotive Android, bạn có thể tham khảo các tài liệu có sẵn trên trang chủ của Android để có cái nhìn tổng quan và sự khác biệt giữa Automotive Android và Mobile phone Android.

⚠️ Lời khuyên ở đây là các bạn cần tập trung vào một tính năng cụ thể. Ví dụ bạn muốn tìm hiểu về Bluetooth, bạn tập trung tìm hiểu về Bluetooth flow in Android, Bluetooth HAL, Bluetooth System Service.
Bởi vì mỗi tính năng của Android đều liên quan tới nhiều layer và nhiều file nên việc bạn tìm hiểu đại khái khá là vô nghĩa.
Một số công việc khi bạn làm việc với Android ở các công ty:
🔨 Thêm chức năng mới vào HAL
🔨 Thêm service mới vào System Service
🔨 Chỉnh sửa quyền trong SELinux
🔨 Tạo hoặc chỉnh sửa các file config trong Android
🔨 Tối ưu resource, power,.. của thiết bị sử dụng Android
Ở đây có 2 lựa chọn về mặt phần cứng:
- Raspberry pi 4: dễ mua, dễ tiếp cận. Nhược điểm là giá cả khá cao, nhiều bug tiềm ẩn
- NXP board: khó mua hơn, giá cả cũng cao. Ưu điểm là source code được NXP cung cấp nên tài liệu đầy đủ, người mới chỉ cần làm theo Document là có thể chạy được Android. Source code của NXP rất xịn nên bạn có thể học hỏi được nhiều.

📌 Nếu bạn cảm thấy giá cả là một vấn đề lớn, bạn cũng có thể sử dụng source code của Google kết hợp cùng Emulator. Nhược điểm ở đây là bạn rất khó/ không thể để viết các driver cho các ngoại vi.

29/03/2025

🔥 Android Embedded Roadmap - Part 1

Để giúp các bạn có cái hướng đi phù hợp, dễ tiếp cận với Android Embedded, mình xin gửi tới các bạn một chiếc roadmap độc quyền xịn xò.

𝐈. 𝐄𝐦𝐛𝐞𝐝𝐝𝐞𝐝 𝐒𝐭𝐚𝐫𝐭𝐞𝐝
Dành cho các bạn mới tìm hiểu về mảng nhúng.

Các bạn cần nắm rõ khái niệm về nhúng, tại sao lại có mảng nhúng trong kỹ thuật.
Sau khi nắm rõ về các khái niệm cơ bản, các bạn nên tìm hiểu các kiến thức về vi điều khiển và vi xử lý bao gồm:
📝 Kiến trúc của vi xử lý và vi điều khiển
📝 Các phép toán tử AND, OR, XOR, NOT,...
📝 Các thành phần trong máy tính như ROM, RAM, data bus,...

Lập trình nhúng ban đầu chủ yếu được viết bằng ngôn ngữ C. Do đó các bạn cần nắm được các kiến thức cơ bản của C:
📝Các câu lệnh cơ bản (if else, switch case,...)
📝 Con trỏ là gì ? Tại sao lại cần dùng con trỏ ?
📝 Một số bài toán cơ bản như Queue, Ring Buffer, Linked List,..

Khi đã hiểu hết những thứ ở trên thì có thể bắt đầu thực hành làm các project nhỏ trên Arduino. Các project có thể là điều khiển led, button điều khiển trạng thái của led, giao tiếp với điện thoại thông qua HC-05,...
⚠️ Quá trình này cần 3-6 tháng để nắm vững kiến thức.

𝐈𝐈. 𝐄𝐦𝐛𝐞𝐝𝐝𝐞𝐝 𝐀𝐝𝐯𝐚𝐧𝐜𝐞𝐝
Dành cho các bạn đã nắm vững các kiến thức của phần Embedded Started.
Mình có một lời khuyên là các bạn nên sử dụng STM32 để bắt đầu làm các project.

Tại sao lại dùng STM32
✅ Cung cấp kinh nghiệm xử lý bài toán ở mức độ thanh ghi
✅ Giúp các bạn có thể tiếp cận và đọc Reference Manual (RM) - là một phần rất quan trọng khi đi làm
✅ Hiểu rõ quá trình khi biên dịch từ code sang mã máy
Ở phần này, các bác cũng cần làm quen với hệ điều hành thời gian thực (RTOS).

Tại sao lại phải làm quen với RTOS
✅ RTOS có thể coi là 1 bản mini OS, giúp các bạn có thể dễ dàng tiếp cận với OS hơn trong tương lai
✅ Cung cấp khái niệm và cách xử lý bài toàn đa luồng (multi-thread)
✅ Cung cấp cách để tránh xung đột giữa các luồng (Mutex, Semaphore,...)
✅ Cung cấp các phương thức trao đổi dữ liệu giữa các luồng (Mailbox, Semaphore,...)
Các bạn có thể bắt đầu từ project đơn giản là làm cho 3 đèn led on/off cùng một lúc.

⚠️ Quá trình này các bạn cần 6 tháng cho đến 1 năm để nắm vững kiến thức.

Want your school to be the top-listed School/college in Hung Yen?

Click here to claim your Sponsored Listing.

Location

Address


Khu đô Thị Ecopark, Văn Giang, Hanoi
Hung Yen
160000