The Brahmi script had two major branches: a northern branch (frequently called Ashokan Brahmi, after the king who put up the Edicts of Ashoka) and a southern (frequenly called Tamil-Brahmi). So far, all the Brahmi-derived scripts that I have described were from the Northern branch, with the possible exception of Oriya.
Tamil-Brahmi is a bit different from Ashokan Brahmi. It has characters for sounds not found in Ashokan Brahmi; it went through three different phases trying to deal with terminal consonants.
The first attempt was alphabetic: the inherent vowel didn’t exist, and if you wanted a vowel, you needed to put a diacritic. The second thing they tried was to make the reader figure out if there was a vowel there or not. The third thing — and what they stuck with — was to use a pulli, which is just a different name for virama.
There is evidence that literacy in Tamil-Brahmi was higher than Ashokan Brahmi. A strong bardic/poetic tradition, local rule (in the local language, instead of a foreign elite’s language imposed upon them), and extensive seafaring trade from their long coastline all contributed to making literacy more common.
Links: Wikipedia Tamil-Brahmi, Wikipedia Tamil history, Ponniyin Selvan I, II, and III, Saigan
Update: Ooops, I said that all the previous posts were Southern Brahmi scripts, while I meant to say Northern. Fixed.
Update2: Found out more about how Tamil-Brahmi handled terminal consonants.
Pingback: Vatteluttu — 500 AD, India | Glyph of the Day
Pingback: Grantha — 500 AD, India | Glyph of the Day