Prefacio (Prefacio) de la Guía práctica para el desarrollo del kernel de Linux para sistemas integrados
En agosto de 2007, renuncié a mi empresa anterior, renunciando a mi puesto como cuadro central de nivel medio de la empresa recién cotizada y a mi generoso salario.
Desde que me gradué en 1996, me he dedicado al desarrollo de tecnología de primera línea de sistemas integrados y kernels de Linux. Las tareas y proyectos que he emprendido los he completado básicamente yo mismo, incluso si soy director de. el departamento de hardware o el director técnico. Como director, sigo haciendo personalmente el trabajo en el que estoy especializado. Por un lado, me encanta este trabajo y siento una gran sensación de logro cada vez que supero un problema (creo que todos los ingenieros técnicos han experimentado esto; por otro lado, actualmente hay una escasez de ingenieros nacionales que se dediquen a sistemas integrados); y desarrollo del kernel de Linux, hay escasez de empleados de alto nivel y la remuneración de los puestos relacionados es relativamente alta en comparación con otros puestos. Contratar a un nuevo empleado menos le ahorrará gastos a la empresa y reducirá una carga, por lo que lo arreglaré. para trabajos relativamente simples y transaccionales a otros empleados, y casi todas las tareas difíciles las hago yo mismo. Estoy acostumbrado a trabajar horas extras, e incluso quedarme despierto toda la noche cuando me apetece. Con esta motivación y acumulada a través de muchos años de práctica, muchas veces puedo resolver problemas en un corto período de tiempo que muchas personas no han resuelto durante mucho tiempo. tiempo. Cuando entré en contacto por primera vez con Linux en el trabajo, para aprender más sobre sistemas integrados y habilidades de desarrollo del kernel de Linux, dediqué mi tiempo libre a diseñar y producir dos placas de desarrollo, MC68VZ328 y S3C4510, así como descarga y programación JTAG simples. Cables, y trasplanté y solidifiqué con éxito Clinux a estas dos placas de desarrollo; hasta ahora, he utilizado varias plataformas de hardware integradas que son populares hoy en día (incluidos microcontroladores, MC68K, PowerPC, ARM, MIPS, DSP) y he realizado trabajos de desarrollo reales. Sistemas operativos integrados (incluidos VRTX, VxWorks, PSOS, Linux), UART escrito, trasplantado o depurado, Ethernet, I2C, HDLC+E1, LCD, teclado, VFD, SCSI, SATA, IDE, controladores para CVBS, VGA, PCI, USB. y otras interfaces y dispositivos.
En los muchos años que llevo trabajando con Linux, siempre he querido comprender completamente este excelente sistema operativo de código abierto. Naturalmente, siento que a medida que pasa el tiempo y aumenta la cantidad de proyectos que hago. Poco a poco me familiarizaré con él. Sin embargo, cada vez que quiero dar un resumen completo y sistemático de los componentes y principios del kernel de Linux en mi mente, siempre me siento atrapado en la garganta. No puedo entenderlo, lo que me hace tener una preocupación oculta en mi corazón: porque no entiendo los principios del kernel de Linux, aunque puedo completar tareas rápidamente y resolver problemas a través de métodos apropiados con más de 10 años de trabajo. Por experiencia, no puedo comprender el principio de dónde empezar cuando me encuentro con un problema, cómo y qué hacer, la falta de previsión general y capacidad de visión de futuro. Este sentimiento de "no tener fondo" en mi corazón me llevó a profundizar más. Y explorar y esforzarme por alcanzar "el fondo" en mi corazón también me hizo darme cuenta de que, aunque he acumulado suficiente experiencia laboral después de más de 10 años de arduo trabajo, rara vez leo libros teóricos y el código fuente del kernel de Linux. , el conocimiento de los principios del kernel de Linux no se ha instalado en mi mente de forma tan natural como lo imaginaba originalmente, por lo que mi nivel teórico aún es muy deficiente, si quiero mejorar, debo pasar por un arduo proceso de precipitación; Trabajo ocupado y tareas apretadas, rara vez tengo tiempo para hacer resúmenes e inducciones sistemáticas. En este caso, por consideración a mi responsabilidad hacia la empresa y hacia mí mismo, decidí dejar mi trabajo y estudiar el código fuente del kernel de Linux en casa con atención y atención. Al mismo tiempo, también hice un resumen completo de mi trabajo de más de 10 años.
Pasé más de medio año leyendo el código fuente del kernel Linux 2.6.10 para la plataforma del procesador ARM y registré más de 2000 páginas de notas y experiencias de lectura de código fuente.
En abril de 2008 no podía quedarme quieto en casa y quería encontrar un trabajo. Antes de dimitir, conducía a menudo o llevaba a mi familia de paseo. Poco después de dimitir, vendí el coche. En los últimos seis meses, además de salir a hacer ejercicio por la mañana, es raro salir por un día. No hay entretenimiento, ni comunicación con amigos ni viajes. ¿Cómo será esta experiencia? para una persona que vive en una ciudad bulliciosa con deseos materialistas? Es más, ¿qué hay de mí, que soy guapo, talentoso, entusiasta y activo (?)? Así que resumí en mi mente los resultados de aprendizaje y las ganancias de más de medio año. Aunque siento que mis ojos están mucho más brillantes que antes, es. Todavía está confuso. Paradójicamente, no tuve más remedio que obligarme a seguir sentado. Saqué todas mis notas de trabajo anteriores, resúmenes de trabajo y placas de desarrollo hechas por mí mismo, y compré algunos libros teóricos que presentaban los principios del kernel de Linux y la escritura de controladores. Combiné todo esto con más de medio año de lectura de Linux. 2.6 El código fuente del kernel se estudió de forma cruzada para confirmarse entre sí y profundizar la comprensión. Al mismo tiempo, resumí, resumí, tomé notas y escribí experiencias sobre estos materiales en junio de 2008. Aclaré mi cabeza y miré las nuevas notas, de repente sentí que el esquema del kernel de Linux 2.6 se estaba volviendo cada vez más claro. Estoy muy emocionado y de repente me imaginé: ¿Por qué no organizar y mejorar las nuevas notas y experiencias, para que yo? ¿Puedo editarlo en un libro que presente los principios del hardware y software del sistema integrado y los procesos y métodos de diseño de hardware? ¿Un libro completo sobre los principios del kernel de Linux integrado, los métodos y habilidades de desarrollo, los principios de funcionamiento de los dispositivos comunes y cómo escribir controladores? Pensándolo bien, cada vez más jóvenes están interesados en el trabajo de alta tecnología y bien remunerado de desarrollar el kernel de Linux para sistemas integrados, pero están luchando por encontrar una guía que presente de manera integral y profunda esta tecnología desde un punto de vista No dudé en gastar mucho dinero para participar en la capacitación, pero cuando algunas de las personas después de la capacitación vinieron a mi entrevista, descubrí que habían aprendido muy poco y no entendían los principios. solo conocía los procedimientos operativos, y algunos ni siquiera estaban familiarizados con los procedimientos básicos. Además, he visto a muchos internautas llamar a desarrolladores experimentados para resumir su experiencia laboral en algunos foros de sistemas integrados y Linux para referencia de todos, lo que me dio la urgencia; para escribir este libro. Así que me senté pacientemente durante más de tres meses y continué resumiendo, resumiendo, refinando, organizando y mejorando. En septiembre de 2008, las notas y experiencias originales se condensaron en la "Guía práctica para el desarrollo del kernel de Linux para sistemas integrados (plataforma ARM). " ", también logré una autotrascendencia, desde la vergüenza y la impotencia de "cruzar el río palpando las piedras" hasta la elegancia y la tranquilidad de "no importa el viento ni las olas, es mejor que pasear por el jardín". !