Bộ điều khiển và firmware: DDM, APC, bộ nhớ, bảo vệ · Bên trong module: laser và bộ thu · Transceiver quang và cáp · Tài liệu · CodingBox
CodingBox Tài liệu

Bộ điều khiển và firmware: DDM, APC, bộ nhớ, bảo vệ

Mọi transceiver có quản lý đều có một máy tính nhỏ bên trong. Vi điều khiển (MCU) đo lường, điều chỉnh, báo cáo và — theo góc nhìn của người lập trình thì đây là điều quan trọng nhất — chính nó là bộ nhớ mà bạn đọc và ghi. Việc một module có một EEPROM thuần túy hay một MCU giả lập EEPROM quyết định module đó có thể được mã hóa ra sao, vì sao một số lần ghi biến mất sau khi ngắt rồi cấp lại nguồn, và vì sao mật khẩu tồn tại. Trang này mô tả những gì bộ điều khiển thực hiện và thiết kế của nó thể hiện ra sao trên bàn thử.

MCU làm những gì

Tác vụChi tiếtBiểu hiện ra ngoài
Đo lườnglấy mẫu nhiệt độ (thermistor hoặc cảm biến trên chip), Vcc, dòng phân cực laser, dòng PD giám sát (Tx) và dòng quang điện của bộ thu (Rx) qua một ADC 10–12 bit, nhiều lần mỗi giây; áp dụng hiệu chuẩn của nhà máygiá trị DDM — Thông số
APC — điều khiển công suất tự độngso sánh dòng PD giám sát với mục tiêu của nhà máy và chỉnh DAC dòng phân cực của drivercông suất Tx không đổi, dòng phân cực tăng dần — Dòng phân cực Tx và lão hóa
Bù nhiệt độcác bảng tra chỉnh dòng điều chế và, trên PAM4, chỉnh cả thiết lập DSP theo nhiệt độtỷ số tắt ổn định
Điều khiển TECvòng lặp PID giữ nhiệt độ laser trên các module có làm mát; phản hồi từ bộ khóa bước sóng trên DWDMgiám sát laser temperature, TEC current
Ngưỡng và cờ báoso sánh mọi giá trị giám sát với ngưỡng báo động/cảnh báo, đặt các cờ bị chốt, điều khiển IntLNgưỡng và báo động
Chân tín hiệu tốc độ thấpđọc TX_DISABLE, RS0/RS1, LPMode, ResetL; điều khiển TX_FAULT, RX_LOS (hoặc khóa/mở các tín hiệu phần cứng)hành vi của chân tín hiệu
Slave hai dâytrả lời tại A0h/A2h (SFP) hoặc A0h kèm trang/bank (QSFP, CMIS)bản đồ bộ nhớ — Giao diện hai dây
Máy trạng tháitrạng thái module và đường dữ liệu theo CMIS; chọn ứng dụng; nén tín hiệuCMIS
Bảo vệ và chức năng riêng của nhà sản xuấtmật khẩu, vùng bảo vệ ghi, lệnh save, mở khóa của nhà sản xuất, chữ ký xác thựcCác kiểu bảo vệ ghi
CDB / cập nhật firmwaretrên các module CMIS, nhận và nạp (flash) ảnh firmware mớibyte phiên bản firmware

Linh kiện điển hình: MCU 8-bit (dòng 8051) với vài kB flash trong các SFP/SFP+ giá rẻ; dòng Cortex-M 32-bit trong các module 100G+ và CMIS; một số nhà sản xuất dùng một ASIC điều khiển transceiver chuyên dụng tích hợp ADC, DAC và slave hai dây.

Hai cách xây dựng bộ nhớ

Thiết kếCách bản đồ bộ nhớ được lưu trữHệ quả đối với việc lập trình
EEPROM rời (ví dụ dòng AT24C02) cho A0h, MCU cho A2hthông tin nhận dạng ở A0h là một EEPROM nối tiếp thật mà host và bộ lập trình giao tiếp trực tiếp; MCU chỉ xử lý chẩn đoánviệc ghi A0h là ghi EEPROM thông thường — phải tôn trọng t_WR và kích thước trang; một chân WP phần cứng có thể chặn việc ghi (Kiểu bảo vệ ghi 1–3)
Bản đồ do MCU mô phỏngMCU trả lời mọi yêu cầu hai dây từ RAM và sao phản ánh các thay đổi vào flash/EEPROM nội bộ của nó — hoặc khôngviệc ghi đi tới đâu là do firmware quyết định: được chấp nhận, bị bỏ qua, bị khóa bằng mật khẩu, chỉ được lưu sau một lệnh save, hoặc bị ghi đè bởi bản sao riêng của firmware ở lần khởi động kế tiếp (kiểu 4–5)
LaiEEPROM cho khối riêng của nhà sản xuất, MCU cho các trang và mật khẩuquy tắc khác nhau theo từng dải byte

Một bản đồ được mô phỏng giải thích được hầu hết các bí ẩn trên bàn thử: giá trị FFh từ một trang mà firmware không triển khai, các lần ghi “thành công” rồi lại tự hoàn nguyên, các byte chỉ đọc trong dải này nhưng tự do trong dải kế tiếp, hiện tượng kéo giãn xung nhịp (clock stretching) khi MCU đang bận lấy mẫu (Lỗi đọc và ghi EEPROM).

Khởi động và cửa sổ t_init

Khi cấp nguồn, MCU nạp dữ liệu hiệu chuẩn và thông tin nhận dạng từ bộ nhớ không mất dữ liệu của nó, khởi động ADC, chạy APC tới mục tiêu và chỉ sau đó mới bật slave hai dây và xóa cờ data-not-ready. Đó chính là khoảng 300 ms (SFP) đến 2 s (QSFP/CMIS) mà đặc tả cho phép trước khi host có thể kỳ vọng nhận được phản hồi, và cũng là lý do một lần đọc ngay sau khi cắm module trả về dữ liệu rác (Những gì host thực hiện).

Hiệu chuẩn nằm ở đây

Các giá trị đếm thô từ ADC không có ý nghĩa gì nếu thiếu các hằng số mà nhà máy đã đo trên một trạm kiểm tra: dòng PD giám sát so với công suất phát thực tế, dòng quang điện của bộ thu so với công suất đầu vào tại đúng bước sóng của module, đường cong thermistor, thang đo DAC của dòng phân cực. Trên các module hiệu chuẩn nội, firmware áp dụng các hằng số này và báo cáo ra đơn vị vật lý; trên các module hiệu chuẩn ngoại, các hằng số được ghi vào A2h 56–91 để host tự áp dụng (Hiệu chuẩn). Ghi đè lên vùng riêng của nhà sản xuất — nơi một số firmware lưu giữ các hằng số này — sẽ tạo ra DDM vô nghĩa hoặc một vòng lặp APC chết đứng — đây là cách kinh điển khiến một lần ghi bất cẩn “biến một module thành cục gạch” (Sản xuất và kiểm tra).

Cách bảo vệ được triển khai

Cơ chếCách triển khaiBiểu hiện trên bàn thử
Mật khẩufirmware so sánh 4 byte được ghi vào vùng mật khẩu (SFP A2h 123–126, QSFP 123–126, CMIS 122–125) với một giá trị đã lưu; mở khóa ghi cho phiên làm việc đóWRITE FAIL cho tới khi giá trị đúng được nhập vào — Passwords
Vùng bảo vệ ghifirmware bỏ qua các lệnh ghi vào những dải nó coi là chỉ đọc (checksum, ngưỡng, hiệu chuẩn, vùng riêng của nhà sản xuất)đọc lại byte thấy không đổi, không báo lỗi
Chân WP phần cứng trên một EEPROM rờichân này được kéo lên mức cao bên trong module hoặc do MCU điều khiểncần bo mạch lập trình điều khiển chân này
Lệnh savedữ liệu ghi vào RAM; một chuỗi lệnh riêng của nhà sản xuất mới ghi chúng xuống flashtự hoàn nguyên sau khi ngắt rồi cấp lại nguồn nếu chuỗi lệnh đó không được gửi
Firmware mirrorkhi khởi động, firmware ghi lại bản đồ bộ nhớ từ chính ảnh của nóthay đổi biến mất sau mỗi lần ngắt/cấp lại nguồn — chỉ công cụ của nhà sản xuất mới đổi được ảnh đó
Xác thựcfirmware tính một chữ ký (hash của số sê-ri, dữ liệu riêng của nhà sản xuất và một khóa bí mật) rồi ghi vào các byte riêng của nhà sản xuất; host xác minh chữ ký đósửa thông tin nhận dạng vẫn qua được checksum nhưng host vẫn từ chối — Khóa nhà sản xuất

Cách nhận biết và lập trình từng kiểu: Các kiểu bảo vệ ghi, Mã hóa lại EEPROM.

Cập nhật firmware

Các module CMIS có thể nhận firmware qua bus hai dây bằng các lệnh CDB (bắt đầu tải xuống, ghi khối, hoàn tất, chạy, commit), thường có hai bank ảnh để một lần cập nhật thất bại vẫn có đường lùi. Các module SFF-8472/8636 không có cơ chế chuẩn nào; các nhà sản xuất dùng chuỗi lệnh riêng qua các byte riêng của nhà sản xuất. Vá lỗi bằng firmware là cách các nhà sản xuất giải quyết các vấn đề tương tác CMIS (Vấn đề CMIS), và byte phiên bản firmware (trang dưới CMIS 39–40, trang 01h 128–129) đáng được ghi lại cùng với thông tin nhận dạng.

Các kiểu sự cố của bộ điều khiển

Triệu chứngNguyên nhân khả dĩ
Module không hiện diện trên bus, phần quang học vẫn bình thườngMCU không khởi động được: firmware hỏng, sụt áp (brown-out), thạch anh hỏng
Giá trị DDM đứng im hoặc vô nghĩaADC hoặc dữ liệu hiệu chuẩn bị hỏng; firmware treo
Công suất Tx trôi dù APC lẽ ra phải giữ ổn địnhPD giám sát hoặc ADC lỗi, APC bị vô hiệu hóa
NACK ngẫu nhiên, đọc chậmMCU quá tải (đang lấy mẫu), giới hạn kéo giãn xung nhịp bị một bộ lập trình quá nhanh vượt qua
Vẫn hoạt động, nhưng mọi lần ghi đều tự hoàn nguyêndo thiết kế firmware mirror — không phải lỗi
Module chết sau một lần ghivùng cấu hình firmware hoặc vùng hiệu chuẩn bị ghi đè

Trong CodingBox

CodingBox xử lý module đúng như cách firmware trình diện nó: phát hiện kiểu bản đồ bộ nhớ, áp dụng các mật khẩu đã biết và các kịch bản lập trình cho những thiết kế dùng lệnh save hoặc dùng mirror, tính lại checksum, giữ một bản sao lưu trước mỗi lần ghi và cho phép bạn khôi phục từ code database nếu bộ điều khiển phản ứng bất thường. EEPROM editor đánh dấu các dải mà đặc tả định nghĩa là chỉ đọc hoặc dành riêng cho nhà sản xuất, để bạn biết khi nào mình đang ghi vào lãnh địa riêng của firmware.


Nếu bạn phát hiện thông tin chưa chính xác hoặc lỗi trong bài viết này, hãy chọn đoạn liên quan và nhấn Ctrl+Enter để .