en el proyecto serán utilizados con frecuencia durante la conducción de transmisión de datos DMA, DMA memoria requerida tiene sus propias características, se considera generalmente que requieren direcciones físicas continuas, y la memoria caché no se proporciona en un núcleo de Linux El dma_alloc_coheren.md. * dev, size_t tamaño, dma_addr_t * dma_handle, gfp_t gfp) {void * ret; if (! dev |
|
* DevS- > dma_mask > = 0xffffffffUL) gfp &= ~ GFP_DMA; ret = (void *) __ get_free_pages (gfp, get_order (tamaño)); //(1) si (RET) {memset (ret, 0, tamaño); * dma_handle = virt_to_bus (RET); //(2)} return ret;} (1) se convierte en una orden de tamaño, es decir, 2 ^ fin (2) a la ret bus de direcciones virtuales esta función es una dirección de internet funciones relacionadas, estos son detalles de implementación en la plataforma x86, desde aquí podemos ver que la función devuelve un valor de dirección de Linux núcleo lineal, por lo que el proceso de implementación de la función mmap facilitaron el desarrollo de controladores. Sin embargo, este no es el caso de la plataforma powerpc. He encontrado problemas al trasladar el controlador pci de la plataforma x86 a la plataforma powerpc. Primero echemos un vistazo al procesamiento de la memoria dma por las dos plataformas. 86: área de memoria DMA Linux se divide en regiones, regiones de memoria y área de memoria superior normal, el área de memoria superior se utiliza que cuando el 768M de memoria física, el área general del 16M DMA, este espacio definido por la sistema operativo pre
Quédate El área DMA y el área Normal usan mapeo lineal, que es usado por direcciones lógicas, y la memoria de gama alta usa direcciones virtuales de kernel. el espacio del núcleo es donde la división: región de aislamiento físico --8M --vmalloc alto aislamiento regiones --8k área de mapeo --4M - Un área de correspondencia fija --128kpowerpc: Esta sección utiliza el chip Freescale mpc5121, por ejemplo, el núcleo no lo hace el uso normal de la zona de memoria, y ZONE_HIMEM ZONE_DMA sólo dos tipos de espacio, bajo ZONE_DMA de almacenamiento de memoria, ZONE_HIMEN de almacenamiento de memoria superior, no toda la memoria utilizando las direcciones lógicas este concepto. Por lo tanto, las operaciones basadas en direcciones lógicas no son portátiles. La siguiente distinción específica aspecto: void * __dma_alloc_coherent (tamaño size_t, dma_addr_t * mango, gfp_t GFP) {//la página espacio de aplicación física = alloc_pages (GFP, orden); //espacio físico caché despejado {unsigned long kaddr = (unsigned long) page_address (página); memset (page_address (página), 0, tamaño); flush_dcache_range (kaddr, kaddr + tamaño);} //aplicación espacio virtual c = vm_region_alloc (&consistent_head, tamaño, gfp &~ (__ GFP_DMA |
__GFP_HIGHMEM)); //dirección virtual para la asignación de dirección física, si (c) {unsigned long vaddr = C- > vm_start; pte_t * pte = consistent_pte + CONSISTENT_OFFSET (vaddr); página struct * Final = página + (1 < < orden); split_page (página, orden); /** Establece el " asa DMA " * /* mango = page_to_bus (página); do {BUG_ON (pte_none (* pte!)); SetPageReserved (página); set_pte_at (&init_mm, vaddr, pte, mk_pte (página, pgprot_noncached (PAGE_KERNEL))); página ++; pte ++; vaddr + = PAGE_SIZE;} while (tamaño - = PAGE_SIZE); //valor de retorno del núcleo de direcciones virtuales. Devolver (void *) c- > vm_start
1, prohibir el inicio de sesión del usuario root ssh #vi /etc /ssh /sshd_config cambiar PermitRo
El usuario puede hacer un mal uso del archivo grub.conf y hacer que falle el sistema operativo Lin
Tomó mucho tiempo (aproximadamente 3 días) y finalmente lo logró. Al principio quise rendirme pero
badblocks es el comando o utilidad en Linux como sistema operativo que puede escanear o probar nuest
Sé un buen ama de casa en las habilidades de administración de sistemas de Linux
Instalación desatendida del sistema RedHat basado en red
guión llamado SNMP y la configuración de registro independiente
Hibernate usa la secuencia del oráculo para generar la clave primaria
Algunos comandos comunes para usar iptables para bloquear segmentos ip en Linux
instalaciones no root con GSL Linux
Vinux experiencia para la acumulación ciega Caozuojitong
Cómo configurar la instalación de vino bajo centos
Visión general de las características del kernel de Linux
Bloquear software de herramienta de intento de contraseña SSH
¿Cómo se desconecta Win8 de la versión de Metro de QQ?
Agregue capacidades de búsqueda remota a Win7 Explorer para buscar información relevante de la web
¿Qué debo hacer si la tableta WIN8 no está conectada a la tienda de aplicaciones?
Instalar el cuadro de herramientas de PE absoluto Recargar el sistema win7 no es difícil
¿Cómo hacer la instalación de win10 en realidad utiliza 30G?
WinXP: el sistema operativo también reproduce el inicio de sesión automático