Cómo codificar un teléfono desde cero

Los teléfonos en sí no están construidos con esos idiomas. Aquí hay una vista de lo que incluye una llamada pila de software:

Comenzando desde abajo tenemos estas capas:

  1. Capa de hardware. En este caso, el procesador de un instrumento de Texas. Los procesadores de teléfonos móviles son SoC o System-on-Chips. Incluye la CPU (Cortex A8), un acelerador de gráficos (PowerVR) y algunos otros periféricos y aceleradores que hacen que el chip sea lo suficientemente potente como para los teléfonos móviles modernos.
  2. La segunda capa desde abajo es la primera capa de software. Este es el núcleo del sistema operativo. Para programar esto necesitamos un lenguaje muy eficiente. En este caso, como los androides tienen un kernel de Linux, se ha escrito con el lenguaje C. Los controladores de hardware se escriben más comúnmente con él. Este compilador también debe ser compatible con nuestro procesador y, por lo general, estos procesadores especializados obtienen sus compiladores del proveedor del procesador. C ++ es otra opción para este nivel. Entonces, sí, estamos limitados, al menos en esta capa, a menos que escribamos nuestro propio compilador (lo cual no es aconsejable porque tiene que ser eficiente y el proveedor tiende a ser la mejor fuente para un compilador eficiente).
  3. La capa verde es la siguiente. En este nivel, los idiomas de nivel superior son más comunes. C ++ es muy común a este nivel. Esta capa ofrece servicios que las aplicaciones pueden usar, como WebKit en este caso, que es el motor del navegador. Por lo general, esta capa también está restringida.
  4. El cuarto nivel son solo las interfaces con los servicios de la capa anterior. En el caso de Android, creo que están escritos en Java, pero también podrían escribirse con C ++ u Objective-C (iOS).
  5. En la capa superior, vemos una gran cantidad de Java / Objective-C. Estas son las aplicaciones que realmente usa en su teléfono.

Esta arquitectura puede variar un poco entre los diferentes sistemas (algunas capas pueden dividirse aún más, etc.) pero en general esa es la descripción general de cómo se construye la pila de software.

Esta imagen carece por completo del núcleo DSP (procesamiento de señal digital) que maneja el procesamiento de datos desde y hacia la radio. “DSP Link Driver” maneja la transferencia de datos entre el núcleo A8 y el DSP. Estos datos se cambian a voz, páginas web, etc. en las diversas capas de software y aceleradores de hardware. DSP también requiere software y esto es aún más probable que C que el sistema operativo.

Debería obtener algunas cosas como controladores y algoritmos de procesamiento de señal optimizados del proveedor del procesador para que no necesite escribir todo usted mismo, pero aún habría mucho que hacer para un teléfono moderno. En realidad, cualquier empresa nueva de hoy elegirá una plataforma de telefonía móvil existente y construirá su producto además de eso. El 99% elige Android. iOS está cerrado y Windows Phone no es muy popular, mientras que otros como Sailfish lo son aún menos. Desarrollar una pila completa de software desde cero requeriría cientos, si no miles de horas hombre para construir.

Si te estoy leyendo correctamente, “desde cero” significa hacer un teléfono solo con partes.

Un teléfono móvil típico (sin cámara, aplicaciones, bluetooth, pantalla de alta resolución, LSI y estuche / controles) se parece a esto;

Por lo tanto, básicamente debería “integrar” todos estos componentes y comenzar a programar. Los componentes que elija determinan el idioma que usaría, pero básicamente es ensamblador. Esto es pura programación de sistemas integrados. Un buen libro para comenzar este viaje es este;

https://books.google.com/books?i

Debido a que los dispositivos móviles son tan complicados y evolucionados, son básicamente “plataformas” para las que las personas eligen y escriben aplicaciones. Desarrollar un teléfono “desde cero” significa (para mí) desarrollar su propia plataforma de comunicaciones.

Si va a cargar un dispositivo de comunicaciones y comenzar a transmitir con él, se encontrará con la FCC. Deberá registrar su “dispositivo”. Por ejemplo, el iPhone 5 está registrado aquí:

https://fccid.io/BCG-E2599A

La parte “Objective-C” que estás citando es con la que construyes aplicaciones una vez que tienes un teléfono “desde cero” que funciona, si de lo que realmente estás hablando es de “escribir aplicaciones” para un teléfono existente (ya sea un iPhone , Android, Blackberry, Windows Phone, Nokia, etc.), entonces hay muchos foros de desarrolladores para esa pregunta. Personalmente, es más fácil y productivo simplemente comprar un iPhone o Samsung y escribir una aplicación excelente para él.

Si acaba de tener el hardware básico, primero deberá escribir el sistema operativo para el teléfono. El hardware toma el código de la máquina, lo interpreta y realiza alguna acción. Si no tiene sistema operativo, estará escribiendo todos sus programas en código de máquina … y no creo que quiera hacer eso

Entonces, una vez que tiene un sistema operativo, necesita que su sistema operativo exponga su funcionalidad a través de una API. Luego, debe proporcionar una forma para que sus desarrolladores escriban programas que llamen a la API. En este punto, debe elegir un idioma y un compilador. Además, su sistema operativo deberá poder cargar programas escritos por desarrolladores y ejecutarlo.

Técnicamente, podría inventar un teléfono en el que escriba programas en PHP. Tendrá que escribir un compilador PHP o personalizar uno existente.