Skip to content

Commit

Permalink
Merge branch 'master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
mariusmm authored Nov 11, 2018
2 parents 41fef5d + ba619fb commit 74e977a
Show file tree
Hide file tree
Showing 7 changed files with 72 additions and 71 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Curs de programació de sistemes encastats: El llibre


Aquest és el repositori del llibre "Curs de programació de sistemes encastats". El pdf el podeu descarregar [aquí (PDF)](https://github.com/mariusmm/Llibreencastats/releases/download/1.0.0/LlibreEncastats.pdf).

El blog corresponent el podeu trobar [aquí](https://sistemesencastats.wordpress.com).
Expand Down
4 changes: 2 additions & 2 deletions capitol_1.tex
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ \subsection{Placa de prototipat}

Aquesta \gls{PCB} porta un parell de botons, un \gls{LED} i un connector on hi ha tot de pins amb diferents funcions que podrem utilitzar quan ho necessitem.

Per treballar amb aquesta plataforma, cal instal·lar el conjunt d'aplicacions {\bf Simplicity Studio} versió 4 \cite{simplicityURL}). Hi ha versions per Linux, Mac i Windows.
Per treballar amb aquesta plataforma, cal instal·lar el conjunt d'aplicacions {\bf Simplicity Studio} versió 4 \cite{simplicityURL}. Hi ha versions per Linux, Mac i Windows.

\begin{figure}
\centering
Expand Down Expand Up @@ -65,7 +65,7 @@ \subsection{Programadors i {\em debuggers}}

A més, aquest programador sol afegir característiques de {\em debug}, de manera que podem controlar l'execució del microcontrolador, inspeccionar el valor de variables o posicions de memòria, accedir a la consola de {\em debug}, etc.

\subsection{Toolchain}
\subsection{{\em Toolchain}}
Com per tot processador, cal un seguit d'eines que ajudin a traduir el nostre codi (normalment C o C++) en instruccions màquina que la CPU pugui processar. Aquestes eines son el compilador i el {\em linker}. El compilador fa aquesta traducció pròpiament dita i genera fitxers objecte i el {\em linker} recull tot de fitxers objecte per crear un sol fitxer executable o biblioteca.

En el cas dels microcontroladors, hem d'acabar obtenint un fitxer executable que serà el que el microcontrolador començarà a executar quan s'engegui. Aquest fitxer haurà de tenir tot el conjunt de biblioteques i funcions necessàries per la correcta execució de l'aplicació, ja que en aquest context no tenim cap mena de sistema operatiu que ens proporcioni cap ajuda ni biblioteques.
Expand Down
46 changes: 23 additions & 23 deletions capitol_2.tex
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ \section{ARM Cortex}
\item {\bf Cortex-M} (de {\bf M}icrocontrolador) CPUs dissenyats per microcontroladors i aplicacions de baix consum \cite{CortexM}.
\end{itemize}

En aquest llibre i curs ens centrarem exclusivament a parlar del Cortex-M i les seves version.
En aquest llibre i curs ens centrarem exclusivament a parlar del Cortex-M i les seves versions.

\begin{figure}
\centering
Expand Down Expand Up @@ -116,7 +116,7 @@ \subsection{Perifèrics mapats a memòria}
\item etc.
\end{itemize}

Dins de la primera zona hi trobem la zona DI ({\em Device Information}) de l’adreça 0x0FE0\_8000 fins a 0x0FE0\_8400. Aquesta zona guarda certs valors únics per a cada dispositiu. En aquest espai, els registres MEM\_INFO\_FLASH, MEM\_INFO\_RAM, i PART\_FAMILY els podem llegir fàcilment \cite[24]{EFM32GRM} (Figura~\ref{fig:EFM32_DI}):
Dins de la primera zona hi trobem la zona DI ({\em Device Information}) de l’adreça 0x0FE0\_8000 fins a 0x0FE0\_8400. Aquesta zona guarda certs valors únics per a cada dispositiu. En aquest espai, els registres MEM\_INFO\_FLASH, MEM\_INFO\_RAM i PART\_FAMILY els podem llegir fàcilment \cite[24]{EFM32GRM} (Figura~\ref{fig:EFM32_DI}):

\begin{figure}
\centering
Expand All @@ -128,7 +128,7 @@ \subsection{Perifèrics mapats a memòria}


\begin{lstlisting}[frame=single,caption={Accedint a memòria en C},label=memorymappedCode,style=customc]
#define FLASH_INFO (*(unsigned char *)0x0FE081F8)
#define FLASH_INFO (*(unsigned char *)0x0FE081F8)
#define RAM_INFO (*(unsigned char *)0x0FE081FA)
#define PART_INFO (*(unsigned char *)0x0FE081FE)

Expand All @@ -137,8 +137,8 @@ \subsection{Perifèrics mapats a memòria}
int main(void) {
while (1) {
aux = FLASH_INFO; /* 32 kB */
aux = RAM_INFO; /* 4 kB */
aux = PART_INFO; /* 73 = Tiny Gecko */
aux = RAM_INFO; /* 4 kB */
aux = PART_INFO; /* 73 = Tiny Gecko */
}
}
\end{lstlisting}
Expand All @@ -153,24 +153,24 @@ \subsection{Perifèrics mapats a memòria}
\begin{lstlisting}[label=devinfo,caption={Exemple de definició d'estructura per accedir a memòria},style=customc]
typedef struct
{
__IM uint32_t CAL; /**< Calibration temperature and checksum */
__IM uint32_t ADC0CAL0; /**< ADC0 Calibration register 0 */
__IM uint32_t ADC0CAL1; /**< ADC0 Calibration register 1 */
__IM uint32_t ADC0CAL2; /**< ADC0 Calibration register 2 */
uint32_t RESERVED0[2]; /**< Reserved */
__IM uint32_t DAC0CAL0; /**< DAC calibrartion register 0 */
__IM uint32_t DAC0CAL1; /**< DAC calibrartion register 1 */
__IM uint32_t DAC0CAL2; /**< DAC calibrartion register 2 */
__IM uint32_t AUXHFRCOCAL0; /**< AUXHFRCO calibration register 0 */
__IM uint32_t AUXHFRCOCAL1; /**< AUXHFRCO calibration register 1 */
__IM uint32_t HFRCOCAL0; /**< HFRCO calibration register 0 */
__IM uint32_t HFRCOCAL1; /**< HFRCO calibration register 1 */
__IM uint32_t MEMINFO; /**< Memory information */
uint32_t RESERVED2[2]; /**< Reserved */
__IM uint32_t UNIQUEL; /**< Low 32 bits of device unique number */
__IM uint32_t UNIQUEH; /**< High 32 bits of device unique number */
__IM uint32_t MSIZE; /**< Flash and SRAM Memory size in KiloBytes */
__IM uint32_t PART; /**< Part description */
__IM uint32_t CAL; /**< Calibration temperature and checksum */
__IM uint32_t ADC0CAL0; /**< ADC0 Calibration register 0 */
__IM uint32_t ADC0CAL1; /**< ADC0 Calibration register 1 */
__IM uint32_t ADC0CAL2; /**< ADC0 Calibration register 2 */
uint32_t RESERVED0[2]; /**< Reserved */
__IM uint32_t DAC0CAL0; /**< DAC calibrartion register 0 */
__IM uint32_t DAC0CAL1; /**< DAC calibrartion register 1 */
__IM uint32_t DAC0CAL2; /**< DAC calibrartion register 2 */
__IM uint32_t AUXHFRCOCAL0; /**< AUXHFRCO calibration register 0 */
__IM uint32_t AUXHFRCOCAL1; /**< AUXHFRCO calibration register 1 */
__IM uint32_t HFRCOCAL0; /**< HFRCO calibration register 0 */
__IM uint32_t HFRCOCAL1; /**< HFRCO calibration register 1 */
__IM uint32_t MEMINFO; /**< Memory information */
uint32_t RESERVED2[2]; /**< Reserved */
__IM uint32_t UNIQUEL; /**< Low 32 bits of device unique number */
__IM uint32_t UNIQUEH; /**< High 32 bits of device unique number */
__IM uint32_t MSIZE; /**< Flash and SRAM Memory size in KiloBytes */
__IM uint32_t PART; /**< Part description */
} DEVINFO_TypeDef; /** @} */
\end{lstlisting}

Expand Down
Loading

0 comments on commit 74e977a

Please sign in to comment.