Mục đích của file này là để độc giả tiếng Việt có thể đọc và hiểu tài liệu
nhân kernel dễ dàng hơn, không phải để tạo ra một nhánh tài liệu riêng.
Nếu bạn có bất kỳ nhận xét hoặc cập nhật nào cho file này, vui lòng thử
cập nhật file tiếng Anh gốc trước. Nếu bạn thấy có sự khác biệt giữa bản
dịch và bản gốc, hoặc có vấn đề về bản dịch, vui lòng gửi góp ý hoặc
patch cho người dịch của file này, hoặc nhờ người bảo trì và người review
tài liệu tiếng Việt giúp đỡ.
Tài liệu này được dịch tự động bằng máy và chưa được review bởi người dịch.
Nội dung có thể không chính xác hoặc khó hiểu ở một số chỗ. Khi có sự khác
biệt với bản gốc, bản gốc luôn là chuẩn. Bản dịch chất lượng cao (được
review) được đặt trong thư mục vi_VN/.
Giao diện truyền hình kỹ thuật số kABI xác định giao diện trình điều khiển bên trong cho
đăng ký trình điều khiển phần cứng cụ thể, cấp thấp cho một phần cứng độc lập
lớp giao diện người dùng. Nó chỉ được những người viết trình điều khiển thiết bị TV kỹ thuật số quan tâm.
Tệp tiêu đề cho API này có tên ZZ0000ZZ và nằm ở
ZZ0001ZZ.
Trình điều khiển bộ giải mã có nhiệm vụ giao tiếp với phần giải mã của
phần cứng. Trình điều khiển như vậy nên triển khai ZZ0000ZZ,
cho biết loại tiêu chuẩn truyền hình kỹ thuật số nào được hỗ trợ và chỉ ra một
loạt chức năng cho phép lõi DVB điều khiển phần cứng thông qua
mã dưới ZZ0001ZZ.
Một ví dụ điển hình về cấu trúc như vậy trong trình điều khiển ZZ0000ZZ là:
cấu trúc tĩnh dvb_frontend_ops foo_ops = {
.delsys = {SYS_DVBT, SYS_DVBT2, SYS_DVBC_ANNEX_A },
.thông tin = {
For satellite digital TV standards (DVB-S, DVB-S2, ISDB-S), the
frequencies are specified in kHz, while, for terrestrial and cable
standards, they’re specified in Hz. Due to that, if the same frontend
supports both types, you’ll need to have two separate
dvb_frontend_ops structures, one for each standard.
The .i2c_gate_ctrl field is present only when the hardware has
allows controlling an I2C gate (either directly of via some GPIO pin),
in order to remove the tuner from the I2C bus after a channel is
tuned.
All new drivers should implement the
DVBv5 statistics via .read_status.
Yet, there are a number of callbacks meant to get statistics for
signal strength, S/N and UCB. Those are there to provide backward
compatibility with legacy applications that don’t support the DVBv5
API. Implementing those callbacks are optional. Those callbacks may be
removed in the future, after we have all existing drivers supporting
DVBv5 stats.
Other callbacks are required for satellite TV standards, in order to
control LNBf and DiSEqC: .diseqc_send_master_cmd,
.diseqc_send_burst, .set_tone, .set_voltage.
ZZ0001ZZ có một luồng nhân
chịu trách nhiệm điều chỉnh thiết bị. Nó hỗ trợ nhiều thuật toán để
phát hiện một kênh, như được xác định tại enumZZ0000ZZ.
Thuật toán được sử dụng được lấy thông qua ZZ0000ZZ. Nếu người lái xe
không điền vào trường của nó tại structdvb_frontend_ops, nó sẽ mặc định là
ZZ0001ZZ, nghĩa là lõi dvb sẽ thực hiện ngoằn ngoèo khi điều chỉnh,
đ. g. trước tiên nó sẽ thử sử dụng tần số trung tâm được chỉ định ZZ0002ZZ,
sau đó, nó sẽ thực hiện ZZ0003ZZ + ZZ0007ZZ, ZZ0004ZZ - ZZ0008ZZ, ZZ0005ZZ + 2 x ZZ0009ZZ,
ZZ0006ZZ - 2 x ZZ0010ZZ, v.v.
Nếu phần cứng bên trong có một loại thuật toán ngoằn ngoèo nào đó, bạn nên
xác định hàm ZZ0000ZZ sẽ trả về ZZ0001ZZ.
Lưu ý
The core frontend support also supports
a third type (DVBFE_ALGO_CUSTOM), in order to allow the driver to
define its own hardware-assisted algorithm. Very few hardware need to
use it nowadays. Using DVBFE_ALGO_CUSTOM require to provide other
function callbacks at structdvb_frontend_ops.
4.2.1.2. Gắn trình điều khiển lối vào vào trình điều khiển cầu¶
Trước khi sử dụng lõi giao diện TV kỹ thuật số, trình điều khiển cầu nối phải đính kèm
bản demo giao diện người dùng, bộ điều chỉnh và các thiết bị SEC và gọi
ZZ0000ZZ,
để đăng ký giao diện người dùng mới tại hệ thống con. Tại thiết bị
tách/gỡ bỏ, người lái cầu nên gọi
ZZ0001ZZ tới
xóa giao diện người dùng khỏi lõi và sau đó là ZZ0002ZZ
để giải phóng bộ nhớ được phân bổ bởi trình điều khiển giao diện người dùng.
Trình điều khiển cũng nên gọi ZZ0000ZZ như một phần của
trình xử lý của họ cho ZZ0001ZZ.ZZ0004ZZ và
ZZ0002ZZ như
một phần của trình xử lý ZZ0003ZZ.ZZ0005ZZ.
Một số hàm tùy chọn khác được cung cấp để xử lý một số trường hợp đặc biệt.
4.2.2. Số liệu thống kê về giao diện truyền hình kỹ thuật số¶
Giao diện truyền hình kỹ thuật số cung cấp nhiều loại
ZZ0000ZZ nhằm giúp điều chỉnh thiết bị
và đo lường chất lượng dịch vụ.
Đối với mỗi phép đo thống kê, người lái xe nên đặt loại thang đo được sử dụng,
hoặc ZZ0000ZZ nếu số liệu thống kê không có sẵn trên một
thời gian. Lái xe cũng nên cung cấp số liệu thống kê cho từng loại.
đó thường là 1 đối với hầu hết các tiêu chuẩn video [1].
Trình điều khiển nên khởi tạo từng bộ đếm thống kê với độ dài và
mở rộng quy mô ở mã init của nó. Ví dụ: nếu giao diện người dùng cung cấp tín hiệu
sức mạnh, nó phải có, trên mã init của nó:
Trên hầu hết tất cả phần cứng giao diện người dùng, số bit và byte được lưu trữ bởi
phần cứng sau một khoảng thời gian nhất định hoặc sau tổng số bit/khối
bộ đếm đạt đến một giá trị nhất định (thường có thể lập trình được), ví dụ: trên
cứ sau 1000 ms hoặc sau khi nhận được 1.000.000 bit.
Vì vậy, nếu bạn đọc sổ đăng ký quá sớm, bạn sẽ kết thúc bằng cách đọc tương tự
giá trị như trong lần đọc trước, khiến giá trị đơn điệu trở thành
tăng quá thường xuyên.
Người lái xe nên có trách nhiệm tránh đọc quá thường xuyên. Đó
có thể được thực hiện bằng hai cách tiếp cận:
4.2.2.3.1. nếu trình điều khiển có bit cho biết khi nào dữ liệu được thu thập sẵn sàng¶
Người lái xe nên kiểm tra những thông tin đó trước khi đưa ra số liệu thống kê.
Bạn có thể tìm thấy một ví dụ về hành vi như vậy tại đoạn mã này (được điều chỉnh
từ logic của trình điều khiển mb86a20s):
4.2.2.3.2. Nếu trình điều khiển không cung cấp số liệu thống kê có sẵn, bit kiểm tra¶
Tuy nhiên, một số thiết bị có thể không cung cấp cách kiểm tra xem số liệu thống kê có
có sẵn (hoặc cách kiểm tra chưa rõ). Họ thậm chí có thể không cung cấp
một cách để đọc trực tiếp tổng số bit hoặc khối.
Trên các thiết bị đó, trình điều khiển cần đảm bảo rằng nó sẽ không đọc từ
thanh ghi quá thường xuyên và/hoặc ước tính tổng số bit/khối.
Trên những trình điều khiển như vậy, quy trình điển hình để lấy số liệu thống kê sẽ như thế nào
(được chuyển thể từ logic của trình điều khiển dib8000):
Xin lưu ý rằng, trong cả hai trường hợp, chúng tôi đang lấy số liệu thống kê bằng cách sử dụng
Gọi lại ZZ0000ZZ ZZ0001ZZ. Lý do là thế
lõi giao diện người dùng sẽ tự động gọi chức năng này theo định kỳ
(thông thường, 3 lần mỗi giây, khi giao diện người dùng bị khóa).
Điều đó đảm bảo rằng chúng tôi sẽ không bỏ lỡ việc thu thập bộ đếm và tăng
số liệu thống kê đơn điệu vào đúng thời điểm.
4.2.3. Các chức năng và loại giao diện truyền hình kỹ thuật số¶