Introduction to SPI and PMIC with SPI interface (chinese)Sneeker Yeh
?
The document discusses SPI interface and configuration of a PMIC. It introduces SPI, describes the SPI module on the iMX31 processor, timing settings, and provides a timing diagram. It notes that the PMIC datasheet determines the configuration, such as POL, PHA, data size, and clock speed. The master must consider how the slave advances its RXFIFO and can choose between single or multiple burst transfers. Configuring the CS signal between bursts and benefits of multiple bursts are also covered.
Concurrency bug identification through kernel panic log (english)Sneeker Yeh
?
The document outlines the analysis of a kernel panic log to identify a concurrency bug in a driver. The analysis included: 1) Log analysis found a buggy memory write, 2) Dump file analysis traced execution to this write, 3) Further log analysis found an interrupted context was involved, suggesting a concurrency bug. Tracing ARM instructions in the dump file around the interruption point helped identify that a variable was being incorrectly accessed.
Basic Concept of Pixel and MPEG data structure (english)Sneeker Yeh
?
Pixel formats describe how color information is stored for individual pixels. Common formats include RGB565 which stores red, green, and blue color values in 16 bits per pixel. MPEG data is structured in a layered hierarchy from pixels to blocks to slices and pictures. It can be packed or unpacked, with packed streams not requiring rearranging frames before display. The decoding process separates video and audio streams from containers and decodes each stream frame by frame to play back multimedia smoothly.
Introduction to netlink in linux kernel (english)Sneeker Yeh
?
The document discusses the Netlink API for inter-process communication between kernel space and user space in Linux. It provides an overview of Netlink, sample code for creating sockets and sending/receiving messages, and analyzes reliability issues with asynchronous message transmission. Specifically:
- Netlink allows communication between kernel and user processes by eliminating round trips between spaces but reliability can be an issue with asynchronous messaging.
- Sample code demonstrates creating Netlink sockets, binding addresses, packing messages and sending/receiving between kernel and user callback functions.
- Reliability is analyzed for various message transmissions, and solutions like acknowledging delivered messages are proposed to ensure successful inter-process communication via Netlink.
Dead Lock Analysis of spin_lock() in Linux Kernel (english)Sneeker Yeh
?
The document discusses spin locks and semaphores in the Linux kernel. It begins with an introduction to the difference between spin locks and semaphores. Spin locks cause threads to continuously loop trying to acquire the lock, while semaphores cause threads to sleep. An example is given of a deadlock scenario that can occur with spin locks. The document then discusses the concept of context in the kernel, including user context, interrupt context, and the control flow during procedure calls and interrupts. Log analysis and examples of double-acquire deadlocks involving spin locks are provided. The document concludes with recommendations for how to prevent deadlocks, such as using spin_lock_irqsave/restore and avoiding semaphores in interrupt context.
The document compares the technical architectures, operational requirements, and costs of SRDF and Dataguard for database replication. Some key differences noted are that Dataguard replicates transactions through log shipping while SRDF replicates blocks and may replicate corrupt blocks. Dataguard standbys can be opened for read-only operations more easily while SRDF volumes need to be mounted at the OS level. Dataguard has additional maintenance and monitoring needs while SRDF has lower resource costs. The document also lists some stress testing, operational, and maintenance requirements for a Dataguard configuration.