Новые книги

Comprehensive Real-World Guidance for Every Embedded Developer and Engineer

This book brings together indispensable knowledge for building efficient, high-value, Linux-based embedded products: information that has never been assembled in one place before. Drawing on years of experience as an embedded Linux consultant and field application engineer, Christopher Hallinan offers solutions for the specific technical issues you're most likely to face, demonstrates how to build an effective embedded Linux environment, and shows how to use it as productively as possible.

Hallinan begins by touring a typical Linux-based embedded system, introducing key concepts and components, and calling attention to differences between Linux and traditional embedded environments. Writing from the embedded developer's viewpoint, he thoroughly addresses issues ranging from kernel building and initialization to bootloaders, device drivers to file systems.

Hallinan thoroughly covers the increasingly popular BusyBox utilities; presents a step-by-step walkthrough of porting Linux to custom boards; and introduces real-time configuration via CONFIG_RT--one of today's most exciting developments in embedded Linux. You'll find especially detailed coverage of using development tools to analyze and debug embedded systems--including the art of kernel debugging.

• Compare leading embedded Linux processors

• Understand the details of the Linux kernel initialization process

• Learn about the special role of bootloaders in embedded Linux systems, with specific emphasis on U-Boot

• Use embedded Linux file systems, including JFFS2--with detailed guidelines for building Flash-resident file system images

• Understand the Memory Technology Devices subsystem for flash (and other) memory devices

• Master gdb, KGDB, and hardware JTAG debugging

• Learn many tips and techniques for debugging within the Linux kernel

• Maximize your productivity in cross-development environments

• Prepare your entire development environment, including TFTP, DHCP, and NFS target servers

• Configure, build, and initialize BusyBox to support your unique requirements
M. УЭИТ   С. ПРАТА    Д. МАРТИН

Язык Си — руководство для начинающих

35. Указатели

35. Указатели

   Операционная система MS - DOS все адресуемое пространство делит на

сегменты. Сегмент - это участок памяти размером 64 К байт.  Для зада-

ния адреса необходимо определить адрес начала сегмента и смещение от-

носительно начала сегмента.

   В TURBO  PASCAL определен адресный тип Pointer - указатель.  Пере-

менные типа Pointer

 

   var p: Pointer;

  

содержат адрес какого - либо элемента программы и занимают  4  байта,

при этом   адрес хранится как два слова,  одно из них определяет сег-

мент, второе - смещение.

   Переменную типа указатель можно описать другим способом.

  

  type NameType= ^T;

  

  var p: NameType;

   

   Здесь p - переменная типа указатель, связанная с типом Т с помощью

имени типа NameType.  Описать переменную типа указатель можно  непос-

редственно в разделе описания переменных:

 

   var p: ^T;

  

   Необходимо различать  переменную  типа указатель и переменную,  на

которую этот указатель ссылается.  Например если p - ссылка на  пере-

менную типа Т, то p^ - обозначение этой самой переменной.

   Для переменных  типа  указатель  введено стандартное значение NIL,

которое означает,  что указатель не ссылается ни  к  какому  объекту.

Константа NIL используется для любых указателей.

   Над указателями не определено никаких операций,  кроме проверки на

равенство и неравенство.

   Переменные типа указатель могут быть записаны в левой части опера-

тора присваивания,  при этом в правой  части  может  находиться  либо

функция определения адреса Addr(X), либо выражение @ X, где @ - унар-

ная операция взятия адреса,  X - имя переменной любого типа,   в  том

числе процедурного.

   Переменные типа указатель не могут быть элементами списка ввода  -

вывода.