{"id":10486,"date":"2015-05-18T08:24:55","date_gmt":"2015-05-18T11:24:55","guid":{"rendered":"http:\/\/www.telecelula.com.br\/wordpress\/?p=10486"},"modified":"2019-09-18T08:28:28","modified_gmt":"2019-09-18T11:28:28","slug":"detalhes-do-mediatek-inicializacao-do-soc","status":"publish","type":"post","link":"https:\/\/www.telecelula.com.br\/wordpress\/?p=10486","title":{"rendered":"Detalhes do MediaTek: inicializa\u00e7\u00e3o do SoC"},"content":{"rendered":"\n<p> Decidi escrever tudo o que sei sobre os SoCs da MediaTek, talvez algu\u00e9m possa inventar um truque legal. As informa\u00e7\u00f5es a seguir foram verificadas no chip quad-core MT6582.<\/p>\n\n\n\n<p><em>NOTA: Essas informa\u00e7\u00f5es foram obtidas de v\u00e1rias fontes e atrav\u00e9s de engenharia reversa.&nbsp;N\u00e3o tome isso como refer\u00eancia!<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"memory-map\">Mapa de mem\u00f3ria<\/h2>\n\n\n\n<p>Retirado da&nbsp;<a href=\"https:\/\/github.com\/EnJens\/MediaTek-documents\/raw\/master\/MTK-Mediatek-Alps-Documents\/MT6575%20HSPA%20Smartphone%20Application%20Processor%20Datasheet%200.91.pdf\">folha de dados<\/a>&nbsp;do&nbsp;<a href=\"https:\/\/github.com\/EnJens\/MediaTek-documents\/raw\/master\/MTK-Mediatek-Alps-Documents\/MT6575%20HSPA%20Smartphone%20Application%20Processor%20Datasheet%200.91.pdf\">MT6575<\/a>&nbsp;:<\/p>\n\n\n\n<table class=\"wp-block-table\"><thead><tr><th>Banco<\/th><th>Endere\u00e7o inicial<\/th><th>Endere\u00e7o final<\/th><th>Tamanho<\/th><th>Dispositivo (s)<\/th><\/tr><\/thead><tbody><tr><td>0x0 a 0xB<\/td><td>0x00000000<\/td><td>0xBFFFFFFF<\/td><td>4 x 256 MB = 3 GB<\/td><td>Controlador de mem\u00f3ria DDR<\/td><\/tr><tr><td>0xC<\/td><td>0xC0000000<\/td><td>0xC0FFFFFF<\/td><td>16 MB<\/td><td>Infraestrutura, Mixmode e sistema MCU<\/td><\/tr><tr><td>0xC<\/td><td>0xC1000000<\/td><td>0xC1FFFFFF<\/td><td>16 MB<\/td><td>Sistema perif\u00e9rico<\/td><\/tr><tr><td>0xC<\/td><td>0xC2000000<\/td><td>0xC2FFFFFF<\/td><td>16 MB<\/td><td>Sistema multim\u00eddia<\/td><\/tr><tr><td>0xC<\/td><td>0xC5000000<\/td><td>0xCFFFFFFF<\/td><td>192 MB<\/td><td>Reservado<\/td><\/tr><tr><td>0xD<\/td><td>0xD0000000<\/td><td>0xDFFFFFFF<\/td><td>256 MB<\/td><td>Sistema de modem<\/td><\/tr><tr><td>0xE<\/td><td>0xE0000000<\/td><td>0xEFFFFFFF<\/td><td>256 MB<\/td><td>Reservado<\/td><\/tr><tr><td>0xF<\/td><td>0xF0000000<\/td><td>0xF000FFFF<\/td><td>64 kB<\/td><td>SRAM no chip<\/td><\/tr><tr><td>0xF<\/td><td>0xF0010000<\/td><td>0xFFFEFFFF<\/td><td>Reservado<\/td><\/tr><tr><td>0xF<\/td><td>0xF8000000<\/td><td>0xF800000C<\/td><td>16 bytes<\/td><td>ID do chip, vers\u00e3o de hardware \/ software<\/td><\/tr><tr><td>0xF<\/td><td>0xF8000010<\/td><td>0xFFFEFFFF<\/td><td>Reservado<\/td><\/tr><tr><td>0xF<\/td><td>0xFFFF0000<\/td><td>0xFFFFFFFF<\/td><td>64 kB<\/td><td>ROM de inicializa\u00e7\u00e3o<\/td><\/tr><\/tbody><\/table>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"boot-rom\">ROM de inicializa\u00e7\u00e3o<\/h2>\n\n\n\n<p>Depois que a CPU se inicializou, o controlador SRAM interno envia uma instru\u00e7\u00e3o de salto para endere\u00e7ar 0xFFFF0000.\u00a0Esta \u00e9 a\u00a0<a href=\"http:\/\/read.pudn.com\/downloads119\/sourcecode\/comm\/mtk\/507390\/System_and_Debug\/System_Service\/BROM_Design_V2.0.0.pdf\">ROM de inicializa\u00e7\u00e3o que<\/a>\u00a0todos os chips v\u00eam, o conte\u00fado n\u00e3o pode ser alterado.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>A ROM de inicializa\u00e7\u00e3o cont\u00e9m um pequeno peda\u00e7o do c\u00f3digo da m\u00e1quina ARMv7 de 32 bits que executa as seguintes etapas:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Inicialize o UART1 (a primeira porta serial) para 8 bits, sem paridade, 1 stopbit e 9600\/19200 baud (dependendo do rel\u00f3gio).<\/li><li>Inicialize o armazenamento flash interno.<\/li><li>Aguarde um&nbsp;<code>Start<\/code>comando por 150ms.&nbsp;Se nenhum comando START for recebido, carregue o Preloader na SRAM On-Chip e execute-o.<\/li><li>Interprete os comandos enviados pelo host, at\u00e9 que um JUMP seja emitido para continuar a execu\u00e7\u00e3o em outro local.&nbsp;Isso geralmente \u00e9 usado para baixar um Preloader no flash e depois inicializ\u00e1-lo.<\/li><\/ol>\n\n\n\n<p>A ROM de inicializa\u00e7\u00e3o suporta os seguintes comandos:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><code>Start<\/code>: Sinaliza que h\u00e1 um host externo conectado e impede que a ROM de inicializa\u00e7\u00e3o seja inicializada a partir do flash.<\/li><li><code>Version<\/code>: Retorna a vers\u00e3o de seguran\u00e7a da ROM de inicializa\u00e7\u00e3o,&nbsp;<code>0xFF<\/code>se n\u00e3o suportar seguran\u00e7a.<\/li><li><code>Serial Link<\/code>: Executa algum tipo de autentica\u00e7\u00e3o para verificar se a ferramenta usada pelo host \u00e9 &#8220;genu\u00edna&#8221;.&nbsp;Se a ROM de inicializa\u00e7\u00e3o oferecer suporte \u00e0 seguran\u00e7a, a disponibilidade de outros comandos ser\u00e1 restringida at\u00e9 que esse comando seja conclu\u00eddo.<\/li><li><code>Write<\/code>e&nbsp;<code>32 Bit Write<\/code>: Grave um \u00fanico valor de 16 ou 32 bits em um endere\u00e7o de mem\u00f3ria de 32 bits.<\/li><li><code>Read<\/code>e&nbsp;<code>32 Bit Read<\/code>: Leia um \u00fanico valor de 16 ou 32 bits de um endere\u00e7o de mem\u00f3ria de 32 bits.<\/li><li><code>Checksum<\/code>: Pega um endere\u00e7o de mem\u00f3ria de 32 bits e um campo de comprimento de 32 bits e calcula a soma de verifica\u00e7\u00e3o XOR do intervalo especificado.<\/li><li><code>Jump<\/code>e&nbsp;<code>Jump secure<\/code>: Continua a execu\u00e7\u00e3o no local especificado do endere\u00e7o de mem\u00f3ria de 32 bits.&nbsp;A vers\u00e3o segura ter\u00e1 dois valores adicionais, um endere\u00e7o de mem\u00f3ria de assinatura de 32 bits e um comprimento de assinatura de 32 bits, que ser\u00e3o usados \u200b\u200bpela ROM de inicializa\u00e7\u00e3o para verificar a validade do programa no endere\u00e7o de destino do salto.<\/li><\/ul>\n\n\n\n<p>N\u00e3o sei se o UART1 est\u00e1 conectado \u00e0 placa de circuito impresso no Aquaris E4.5; ele pode estar conectado \u00e0 entrada de fone de ouvido.<\/p>\n\n\n\n<p>No pr\u00f3ximo artigo, falarei sobre o Preloader.<\/p>\n\n\n\n<p>Se voc\u00ea souber melhor e \/ ou algo mudou, me encontre no Launchpad.net ou no Freenode IRC e entre em contato!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Decidi escrever tudo o que sei sobre os SoCs da MediaTek, talvez algu\u00e9m possa inventar um truque legal. As informa\u00e7\u00f5es a seguir foram verificadas no chip quad-core MT6582. NOTA: Essas informa\u00e7\u00f5es foram obtidas de v\u00e1rias fontes e atrav\u00e9s de engenharia reversa.&nbsp;N\u00e3o tome isso como refer\u00eancia! Mapa de mem\u00f3ria Retirado da&nbsp;folha de dados&nbsp;do&nbsp;MT6575&nbsp;: Banco Endere\u00e7o inicial [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-10486","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-treinamento-tecnico-em-video","7":"czr-hentry"},"_links":{"self":[{"href":"https:\/\/www.telecelula.com.br\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/10486","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.telecelula.com.br\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.telecelula.com.br\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.telecelula.com.br\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.telecelula.com.br\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10486"}],"version-history":[{"count":2,"href":"https:\/\/www.telecelula.com.br\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/10486\/revisions"}],"predecessor-version":[{"id":10489,"href":"https:\/\/www.telecelula.com.br\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/10486\/revisions\/10489"}],"wp:attachment":[{"href":"https:\/\/www.telecelula.com.br\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10486"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.telecelula.com.br\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10486"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.telecelula.com.br\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10486"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}