Chuyển sang dùng VI(M)

Chuyển sang dùng Vi

Vi – Editor khá nhiều tuổi, có lẽ còn nhiều tuổi hơn của mình.
Là editor phổ biến nhất trên hệ thống dòng lệnh Linux, Unix hoặc tương tự.
Có Linux, bạn gần như sẽ có thể dùng Vi. Mà Linux thì có ở rất rất nhiều nơi.
Có phải vì nó mặc định nên nó phổ biến???
Mình từng nghĩ vậy hoặc nghĩ chắc nó nhẹ nên người ta cài sẵn nó thôi
chứ chức năng hoặc độ tiện dụng chắc tệ lắm.
Vì thực ra, ở trường mình từng dùng 1, 2 lần thôi. Vì khi mới bắt đầu biết đến
Linux, thì nó cũng có giao diện đồ họa khá tiện rồi. Thầy giáo lại là một
emacs-fan nữa nên ít khi phải dùng Vi.
Tiếp tục đọc

Advertisements

Giới thiệu về lập trình Assembly trên Linux (AT&T Style không phải Intel Style)

Tham khảo
– Sách : AT&T Assembly Language, Richard Blum

1. Ngôn ngữ Assembly là gì?

  • Ở mức thấp nhất, Process chỉ hiểu instruction code
  • Instruction Code là các mã nhị phân chứa các thành phần: Instruction prefix, Opcode, ModR/M, SIB, Displacement, Data Element.
  • Người ta hoàn toàn có thể viết chương trình bằng instruction code, nhưng nó sẽ cực kì khó nhọc, bởi ta chỉ thấy không gì khác ngoài các byte nối tiếp nhau.
  • Việc sử dụng các ngôn ngữ bậc cao giúp việc viết chương trình dễ dàng hơn rất nhiều, vì trình biên dịch hoặc thông dịch đảm nhiệm việc chuyển mã ngôn ngữ bậc cao trực tiếp hoặc gián tiếp sang instruction code để chạy.
  • Tuy nhiên, việc sinh instruction code của trình biên dịch/thông dịch không phải luôn luôn hiệu quả. Tiếp tục đọc

So sánh giữa Buildroot và Yocto Project

Bài này sẽ dịch lại Slide thảo luận giữa 2 diễn giả là Alexandre Belloni, Thomas Petazzoni
từ Free Electrons tại Embedded Linux Conference 2016.

So sánh giữa Buildroot và OpenEmbedded/Yocto Project

1. Điểm chung

  • Đều là build-system cho Embedded Linux.
    Mục tiêu là có thể customize, build hoàn chỉnh một Embedded Linux System.
    Bao gồm: filesystem, toolchain, kernel, bootloaders
  • Đều được build từ source
  • Sử dụng cross-compilation
  • Rất actively trong cả dự án đang maintained và phát triển.
  • Được sử dụng rộng dãi trong công nghiệp.
  • Tài liệu tốt, nhiều khóa đào tạo.
  • Sử dụng Free Software (phần mềm tự do)
    Tiếp tục đọc

Thực hiện 4 Stage khi Compile bằng tay (Manual)

Ta đã có bài giới thiệu về 4 Stage khi Compiling rồi. Đầu ra của Stage trước sẽ là đầu vào của Stage sau.

Trong compile thông thường dạng

$gcc -o HelloWorld HelloWorld.c

Với câu lệnh trên,ta sẽ không thấy kết quả của 3 Stage đầu tiên.

Để hiểu rõ hơn, chúng ta hãy thử thực hiện các Stage bằng tay xem liệu ta có thể tạo ra file chạy như câu lệnh compile trên hay không.

Tiếp tục đọc

4 Stage khi biên dịch HelloWorld.c

Gần đây, phải giải quyết giúp một vài vấn đề liên quan đến Cross-Compile. Có tìm hiểu kĩ một chú về Compiler, Linker, và Loader.
Bài này xin nói về cơ bản về quá trình biên dịch một file source code (.c) sang dạng chạy được.
Ví dụ: từ HelloWorld.c thành HelloWorld và chạy được như ví dụ dưới đây.

HelloWorld.c

#include
int main()
{
print("Hello World \n");
return 0;
}

Kết quả chạy:

$./HelloWorld
HelloWorld

Tiếp tục đọc

Một chút hiểu thêm về “Hello World” trong C.

Gần đây, gặp một số vấn đề về Loader-Linker giữa môi trường build và môi trường chạy trong Cross-Compiling.

Có thể bất kì chương nào trong Linux cũng vậy. Nhưng chỉ xét một chường trình được build bằng C thì
một chương trình sẽ được chạy 2 cách dưới đây

Tiếp tục đọc

Lỗi về Case-sensive khi biên dịch C (gcc)

Khi phát triển các ứng dụng trên Linux, nhúng Linux, mình hầu như cài đặt và sử dụng một máy ảo (tạo bằng VMWare hoặc VirtualBox). Cài trình biên dịch GCC lên đó.
Hầu như mình có thể làm mọi việc trên môi trường máy ảo đó trừ quản lý source.
Vì cty mình vẫn sử dụng SVN với Client là Tortoise. Linux cũng có rất nhiều công cụ tuơng tự Tortoise nhưng để tránh những vấn đề không cần thiết, có thể làm phiền người khác liên quan đến tương thích SVN, mình vẫn chọn quản lý bằng Tortoise trên Windows.
Tiếp tục đọc

PER trong ASN.1 Encoding

PER là phương thức biểu diễn dữ liệu ngắn gọn và xúc tích nhất có thể của ASN.1. Thay vì sử dụng TLV như BER, PER sử dụng Preamble (diễn cho nhiều hoặc trạng thái bị lược bỏ của một dữ liệu bên trong), giá trị kích thước(cũng có thể bị lược bỏ), giá trị (cũng có thể bị lược bỏ), hay gọi là PLV.

Đơn vị biểu diễn của PER không phải Octet mà là Bit. Mỗi phần tử sẽ thuộc 1 trong 3 loại sau:
1. Trường dư bit, tức là dãy bit không thể biểu diễn bằng một số nguyên các Octet.
2. Trường nguyên bit, có thể biểu diễn bằng một số nguyên các Octet.
3. Danh sách trường, chứa cả các thành phần là nguyên bit và dư bit.

Tiếp tục đọc